2010-08-02 101 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找到。