2010-12-17 77 views
4

问题:什么是有应用程序生命周期中创建的所有对象出生/死亡/内存使用的全面视图的最佳方式? (图文报告会更好).NET:监控对象寿命(出生/死亡/内存)

为什么这样一个问题: 其中许多人一样,背后的想法,就是要揭示可能永远不会被垃圾收集器收集长期生活的对象或导致内存故障(如作为堆栈/堆栈问题等),并提供有价值的信息来有效管理对象生命周期

(其实我只是花了整夜的时间调试一个多线程应用程序,最后注意到“相信是处置/更新”的对象实际上是事实上仍然活着并砸碎服务器内存。)

VS2010 Performance Wizard &探查可能是一个很好的入门... 我偶然发现几个方法可以做到这一点编程,但它涉及的个别结束了对象(苦心,而不是代码无缝)

我正在寻找的东西,应该是这样的:

Application START[-----------------------------------------------------------]END 
Object 1    [---------------------------] 
Object 2       [---------------------------] 
Object 3   [-----------------------------------------------------] 

回答

2

米卡,

正如你指出,你可以使用VS2010探查器(如果您的Visual Studio高级版或旗舰)。有关更多信息,请参阅MSDN关于收集“对象生命周期”信息的页面。

请注意,与其他性能分析模式相比,此性能分析模式相当重量级,并且您可能会发现收集的VSP文件非常大,除非您有相当集中的性能分析。

分析报告将以表格形式显示信息,但您可以将数据复制到Excel或您选择的其他程序中以进一步分析/制图。

声明:我使用Visual Studio分析器。

+0

哈!我错过了“还收集.NET对象生命周期信息”复选框!非常好的工具确实。希望十年前我拥有了它,可以避免一堆夜晚盯着阴郁无尽的日志文件。 THANX – 2010-12-17 17:42:23

1

有一些工具可以做到这一点,但不像图那么容易。你需要学习一些这些工具。

免费: CLR探查 http://msdn.microsoft.com/en-us/library/ff650691.aspx

的WinDbg: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

使用SOS或SOSEX扩展使用WinDbg剖析.NET代码。

商业: 红门蚂蚁探查: http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/

+0

我昨天给了CLR Profiler一个试用版,但在我看来,它并不足以直接使用。至于红门,听起来更像一个火箭筒,关于我期望的简单用法。此外,它不知道它确实满足了我所需要的几十个蓬勃发展的功能。 – 2010-12-17 17:36:53