2013-11-01 69 views
1

.net垃圾回收不能運行的條件是什麼? cpu使用率過高會阻止垃圾收集的運行?.net垃圾回收和高CPU

我正在使用visual 2010開發一個非常大的項目.net 4, 我添加了新項目的一部分,現在正在對它進行性能測試。 在測試過程中我發現,當我把客戶端置於高負載,幾乎100%的CPU時,內存就像是有泄漏一樣。在經過許多測試後,我沒有發現我使用過ANTS分析器,並且發現比每隔5分鐘拍攝一次快照時記憶就像往常一樣。 ANTS強制垃圾收集工作,所以我出來的問題, .net垃圾收集不能在高cpu不工作的中斷應用程序運行?

+1

使用Perfview分析GC事件:http://channel9.msdn.com/Series/PerfView-Tutorial/PerfView-Tutorial-9-NET-Memory-Investigation-Basics-of-GC-Heap-Snapshots http:// channel9.msdn.com/Series/PerfView-Tutorial/Tutorial-10-Investigating-NET-Heap-Memory-Leaks-Part1-Collecting-the-data – magicandre1981

回答

2

檢查問題後,我得出結論,高CPU阻止GC正常工作。 我每隔幾分鐘就調用GC進行一次測試,因爲它應該是正常運行的程序。在它之後,我將程序的主要瓶頸分叉爲幾個核心。在c#和.net中,cpu停止運行,內存再次像往常一樣運行良好 - 在恆定範圍內上下運行。