mscorwks.dll内存泄漏

时间:2010-08-02 08:35:18

标签: c# asp.net memory-leaks

我们的一个ASP.net应用程序遇到问题,mscorwks.dll使用了大量内存。 任何人都有任何关于从何处开始寻找内存泄漏的提示?

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

3 个答案:

答案 0 :(得分:0)

使用.NET配置文件,例如

答案 1 :(得分:0)

答案 2 :(得分:0)

调查导致泄漏的托管类型的步骤可以通过以下步骤进行总结:

  1. 启动WinDbg并附上您的流程
  2. 使用:.loadby sos mscorwks将SOS调试器扩展加载到WinDbg中(当您的应用程序在v4.0上运行时,将mscorwks替换为clr
  3. 使用!dumpheap -stat
  4. 转储内存使用情况统计信息
  5. 查找泄漏类型(根据其内存使用情况和实例数)
  6. 找到泄漏类型后,使用!dumpheap -mt <INSTANCE METHODTABLE>转储其实例(可以从上一个命令的输出中检索methodTable)
  7. 选择一些随机实例,并使用!gcroot <INSTANCE ADDRESS>
  8. 查看GC集合未发布的原因(gc根目录仍然保留对它们的引用)

    此时,您应该有足够的数据来查找泄漏源。

    可以找到有关这些步骤的更详细的文章here