【发布时间】:2010-01-07 22:28:10
【问题描述】:
.NET 开发人员在托管应用程序中寻找(并避免)非托管泄漏的最佳方法是什么?
似乎有很多优秀的资源可用于跟踪托管泄漏,但我在托管应用程序中跟踪非托管泄漏的资源并不多。
This question 是相关的,但从纯粹非托管的角度提出问题,因此许多答案都假设您可以访问非托管代码,并且没有提到任何特定于 .NET 的陷阱或技术。
这是我尝试过的一些(非常基本的)事情:
- DebugDiag。它看起来很有前途,可能对你有用,但它碰巧让我的特定应用程序崩溃。
- Rational PurifyPlus。可悲的是,我的应用程序也崩溃了。
- AQTime(在@Reed 和@Caelum 的推荐下)。这个程序看起来很棒,但是,就像@Caelum 提到的问题的海报一样,AQTime 也会使我的应用程序崩溃。
- 暂时删除创建我知道使用非托管内存的对象的代码。
- 确保应用正在处理所有实现
IDisposable的对象
我应该提到,我能够使用上面的分析器成功地分析另一个托管应用程序(它正在泄漏非托管内存)。如果您有未受管理的泄漏,请尝试一下。
【问题讨论】:
标签: .net memory-leaks