Profiler报警统计

时间:2012-09-04 02:42:09

标签: c# .net clr profiler

我在我的C#应用​​程序上运行了一个分析器(CLR Profiler 4.0),在应用程序终止后,我留下了以下统计信息:

创造的手柄:34,126 处理被摧毁:32,844 处理生存:1,282

我的印象是,当程序终止时,处理幸存的应该接近零。我错了吗?我的应用程序没有泄漏任何内存有哪些其他指标?

1 个答案:

答案 0 :(得分:2)

这些是在关闭应用程序之前幸存的句柄。这并不意味着您的应用程序正在泄漏内存,所有句柄,应用程序域以及生成在此过程中的其他“托管”资源都将被清除。如果您调用了任何本机dll或使用了其他“不安全”代码块(非托管资源),则必须确保在代码中释放这些资源(可以使用析构函数或IDisposible接口来执行此操作)。

我建议你从“Under the hood of .NET Memory Management”的第44页开始阅读标题“Generational garbage collection”。这应该有点清除这些结果。