2014-12-05 50 views
0

IIS託管的WCF服務正在消耗大容量內存,如18 GB,服務器速度變慢。服務器模式下的GC未收集內存

I Analyzed Mini轉儲文件,它只顯示1 GB或活動對象。我瞭解GC未清除內存,並且GC必須在64位系統中以服務器模式運行。任何想法爲什麼整個計算機停滯不前,應用程序佔用大量內存?

+0

你應該在你的問題中提供更多細節。你怎麼知道它使用18GB,你是如何生成和分析你的「迷你轉儲文件」的。當你說「整個計算機停滯不前」時,服務器上的其他應用程序也變慢了嗎? – 2014-12-05 15:48:34

+0

是的,其他Windows服務無法執行隊列中的請求。我從任務管理器收集性能計數器和微型轉儲。我找到了它的根本原因,並得到了現在的解決方案。 .NET 4.5解決了這個問題。謝謝 – srini 2015-01-09 14:17:57

回答

0

GC在服務器模式下運行時,它被配置爲獲得更好的性能。我瞭解在服務器模式下運行的GC會提高性能,因爲GC不會經常由於高可用內存而觸發GC,並且在服務器模式下它會對內存使用量有高限制。這裏的問題是CLR觸發GC的過程達到了最高限制,並且它試圖一次性清除巨大的18 GB內存,因此它使用了90%的系統資源,其餘應用程序滯後。

我們嘗試重新啓動,但它永遠都是如此,我們不得不殺死這個過程。並且現在使用Workstation模式GC進行平滑和清潔。唯一的區別是響應時間在1.5 GB分配後因GC而延遲。

一個更多的信息:.NET 4.5版本已經修改了這個已經解決了GC中的這個問題。