我知道有噸的線程這一點。我讀了其中幾個。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