mscorwks.dll内存泄露
问题描述:
我们在我们的一个ASP.net应用程序中遇到问题,mscorwks.dll使用了大量内存。 任何人都有从哪里开始寻找内存泄漏的提示?mscorwks.dll内存泄露
mscorwks!EEVirtualAlloc + 119:1.26 GBytes的未完成分配。
答
调查哪些托管类型是造成泄漏,可以概括为以下步骤的步骤:
- 启动的WinDbg和使用
- 加载SOS调试器扩展附上过程分成的WinDbg:
.loadby sos mscorwks
(更换mscorwks
与clr
当你的应用程序(根据自己我的V4.0)使用!dumpheap -stat
- 查找泄漏类型
- 转储内存使用统计信息运行MORY使用和实例计数)
- 找到泄漏类型后,转储使用
!dumpheap -mt <INSTANCE METHODTABLE>
的情况下(在方法表可从先前命令的输出) - 检索挑选一些随机的情况下,看看他们为什么没有被GC释放收集(其中gc根仍保留对它们的引用)使用
!gcroot <INSTANCE ADDRESS>
此时,您应该有足够的数据来查找泄漏源。
关于这些步骤的更详细的文章可以在here找到。
虚拟机必须分配内存,你的应用程序将如何运行? – leppie 2010-08-02 08:59:17