2010-08-02 129 views
1

我們在我們的一個ASP.net應用程序中遇到問題,mscorwks.dll使用了大量內存。 任何人都有從哪裏開始尋找內存泄漏的提示?mscorwks.dll內存泄露

mscorwks!EEVirtualAlloc + 119:1.26 GBytes的未完成分配。

+0

虛擬機必須分配內存,你的應用程序將如何運行? – leppie 2010-08-02 08:59:17

回答

0

調查哪些託管類型是造成泄漏,可以概括爲以下步驟的步驟:

  1. 啓動的WinDbg和使用
  2. 加載SOS調試器擴展附上過程分成的WinDbg:.loadby sos mscorwks(更換mscorwksclr當你的應用程序(根據自己我的V4.0)使用!dumpheap -stat
  3. 查找泄漏類型
  4. 轉儲內存使用統計信息運行MORY使用和實例計數)
  5. 找到泄漏類型後,轉儲使用!dumpheap -mt <INSTANCE METHODTABLE>的情況下(在方法表可從先前命令的輸出)
  6. 檢索挑選一些隨機的情況下,看看他們爲什麼沒有被GC釋放收集(其中gc根仍保留對它們的引用)使用!gcroot <INSTANCE ADDRESS>

此時,您應該有足夠的數據來查找泄漏源。

關於這些步驟的更詳細的文章可以在here找到。