我在哪里可以找到一个工具来查看内存中的对象?

时间:2010-11-01 18:54:16

标签: c# memory .net-4.0

我正在寻找或可以告诉我有关我的物品的工具。我想看看哪些对象被实例化,为GC准备等等。我意识到我可以测试每个对象,但我更喜欢我的应用程序的整体视图。这将用于故障排除。

有什么建议吗?

6 个答案:

答案 0 :(得分:3)

我想说这取决于您使用该工具的频率。 WinDbg + SOS让你做所有你要求的事情,但它有一个漫长而陡峭的学习曲线。它非常强大,因为它可以让您检查应用程序的托管和本机部分,但需要一些时间来适应。 WinDbg是免费的,SOS附带.NET Framework。有关其他选项,请查看PSSCor2和SOSEX.dll。

另外,还有一些商业选择可能会给你带来更顺畅的体验。我喜欢ANTS Memory Profiler,但.NET Memory Profiler也非常好。

答案 1 :(得分:2)

此案例中的首要解决方案是WinDbg与罢工之子(SOS)扩展。参见:

http://msdn.microsoft.com/en-us/library/bb190764.aspx

至于使用WinDbg管理调试的概述,Tess的博客是一个非常好的resoruce:

http://blogs.msdn.com/b/tess/

修改: 如果您有兴趣看到对象引用,因为它们与垃圾收集有关,这篇文章特别有趣:

http://blogs.msdn.com/b/tess/archive/2010/03/03/tool-for-generating-dgml-graphs-showing-why-your-object-can-t-be-collected-visualgcroot.aspx

答案 2 :(得分:2)

您需要profiler(JetBrains dotTrace和Redgate ANTS是特别优秀的商业资讯制作者)。

答案 3 :(得分:1)

this recent post中,艾恩德写了dotTrace。 看起来这可能是你正在寻找的东西。

答案 4 :(得分:0)

我会说CLR Profiler,但我不认为它已更新为4.0

答案 5 :(得分:0)