.NET:监控对象的生命周期(出生/死亡/记忆)

Meh*_*ANI 7 .net c#

问题:在应用程序生命周期内创建所有对象的出生/死亡/内存使用情况的最佳方法是什么?(图形报告会更好)

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

(我实际上只花了一整夜调试一个多线程应用程序,最后注意到"相信被处置/更新"的对象实际上仍然活着并粉碎了服务器内存.)

VS2010性能向导和Profiler可能是一个很好的入门者......我偶然发现了一些以编程方式执行此操作的方法,但它涉及单独包装对象(艰苦而不是代码无缝)

我正在寻找看起来像这样的东西:

Application START[-----------------------------------------------------------]END
Object 1                [---------------------------]
Object 2                          [---------------------------]
Object 3           [-----------------------------------------------------]
Run Code Online (Sandbox Code Playgroud)

Col*_*sen 2

米卡,

正如您所指出的,您可以使用 VS2010 Profiler(如果您有 Visual Studio Premium 或 Ultimate)。有关详细信息,请参阅有关收集“对象生命周期”信息的MSDN页面。

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

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

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