我有一个.NET Windows Store应用程序存在内存泄漏问题。该怎么办?我使用的JetBrains或Red-Gate/ANTS桌面应用程序的分析工具不支持Metro应用(现在是否支持了呢?)
我有一个.NET Windows Store应用程序存在内存泄漏问题。该怎么办?我使用的JetBrains或Red-Gate/ANTS桌面应用程序的分析工具不支持Metro应用(现在是否支持了呢?)
对于最简单的方法 - 跳到底部阅读使用Visual Studio 2013进行此操作的说明。
现在可能会有一些新工具 - 也许是更新的Visual Studio中的某些内容,我很想了解这些内容,但之前我尝试过使用WinDbg并取得了一些成功。以下是我以前关于如何使用它的笔记:
1. Create dump file from process manager
2. Run WinDbg (X64)
3. File/Open Crash Dump… (Crtl+D)
4. Run following:
lm
.load C:\windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll
.sympath SRV*c:\localsymbols*http://msdl.microsoft.com/download/symbols
.symfix
.reload
!dumpheap -stat
.load C:\windows\Microsoft.NET\Framework\v4.0.30319\sos.dll
可能并非所有这些命令都是必需的,但这就是对我有效的。
现在您可以找到似乎存在太多实例的对象类型。
!DumpHeap -type TypeName
其中类型名称只是类型的名称 - 不需要完全限定的命名空间。
现在,您可以检查是什么将此对象保留在内存中:
!GCRoot Object_Address
一些更多的链接:
http://msdn.microsoft.com/en-us/library/bb190764.aspx