我知道这有很多线索.我读了一些.
我想知道在我的情况下是否正确 GC.Collect();
我有一台MMORPG服务器,在生产中它日夜在线.并且每隔一天重新启动服务器以实现对生产代码库的更改.每20分钟,服务器暂停所有其他线程,并序列化当前游戏状态.这通常需要0.5到4秒
GC.Collect();序列化之后是一个好主意吗?
显然,服务器不断创建和销毁游戏物品.
我会在性能或内存优化/使用方面获得臭名昭着的收益吗?
我不应该手动收集吗?
我已经读过如果在错误的时刻或太频繁地使用收集会如何变坏,但我认为这些存储既是收集的好时机,也不是那么频繁.
服务器在框架4.0中
更新回复评论:
我们随机经历服务器冻结,有时,出乎意料的是,服务器内存使用量将逐渐增加,直到它达到服务器占用太长时间来处理任何网络操作的程度.因此,我正在考虑许多不同的方法来解决这个问题,这就是其中之一.
Nov*_*zky 12
垃圾收集器知道什么时候运行,你不应该强迫它.它不会改善性能或内存优化.如果需要,CLR可以告诉GC收集不再使用的对象.
回答更新的部分: 强制收集不是解决问题的好方法.您应该更深入地了解一下代码,找出问题所在.如果内存使用量意外增长,则可能存在未正确处理的非托管资源问题,甚至是托管代码中的"漏洞代码"问题.
还有一件事.如果调用GC.Collect修复问题,我会感到惊讶.