c# – 检测“泄漏”的IDisposable对象
有很多问题,询问如何检测IDisposable对象泄漏.似乎答案是
“you can’t”.
我刚刚检查了最简单的测试用例,FxCop 10.0没有这样做,ReSharper 4与MSVS2010不这样做. 这似乎对我来说是错误的,比C中的内存泄漏更糟(至少我们已经建立了检测工具). 我在想:可以使用反射和其他模糊的高级技术,我可以在运行时注入检查,在终结器中看看Dispose是否被调用? WinDBG SOS的魔术技巧怎么样? 即使没有现成的工具也可以,我想知道这是否可以在理论上实现(我的C#不是非常尖锐). 想法? 注意这个问题的标题可能是误导性的.这里的真正问题应该是是否已经将Dispos()适当地放入IDisposable对象中. GC处理不算,因为我认为这是一个错误. 编辑:解决方案:.NET内存分析器做这个工作.我们只需要在程序结束时垃圾邮件发送几个GC.Collect(),以使我们的分析器能够正确地获取统计信息. 解决方法
你没有足够的搜索.有大量的.NET内存分析器,它会在程序运行时看到你的程序,并让你知道你的内存在哪里(如何泄漏).
我会检查以下任何一个: Microsoft’s CLR Memory Profiler (free) 更新 SciTech的.NET内存分析器具有一个名为“Dispose Tracker”的功能,该功能适合OP的请求,仅在其应用程序中跟踪Dispose调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |