我知道有吨的线程这一点。我读了其中几个。C#生产服务器,我收集垃圾吗?
我想知道如果我的情况下,它是正确的GC.Collect();
我有一个MMORPG的服务器,它在生产线上是白天和黑夜。并且服务器每隔一天重新启动以实施对生产代码库的更改。服务器每隔20分钟暂停所有其他线程,并序列化当前的游戏状态。这通常需要0.5到4秒
难道是一个好主意,系列化后GC.Collect();
?
的服务器,很明显,不断创建和销毁游戏道具。
我本来在性能或内存优化/使用一个臭名昭著的收益?
我不该手动收集?
我读过有关如何收集,如果在错误的时刻使用,或过于频繁可不好,但我想这些节省都是一个很好的时机,收集,而不是频繁。
服务器处于框架4.0
更新在回答评论:
我们随机遇到服务器死机,有时,出乎意料的是,服务器的内存使用量将越来越提高,直到达到一个点时,服务器处理任何网络操作的时间太长。因此,我正在考虑许多不同的方法来解决这个问题,这是其中之一。
为什么你想打电话给GC.Collect?有什么问题吗? – Novitzky 2011-05-07 22:39:35
更新了我的问题背后的原因。 – bevacqua 2011-05-07 22:50:52
你看到了这个问题,但你不知道根本原因,并开始选择对你来说显而易见的第一件事。尝试找到根本原因(例如使用内存分析),然后找到合适的解决方案将会容易得多。 – Andrey 2011-05-07 22:58:57