0 .net c# memory-leaks memory-leak-detector
我有一些C#代码.我使用代码分析来查找我没有使用using(){}或不调用dispose的所有地方.这样就完成了.但它仍然泄漏.除了两个函数(SetWindowPos,SetForegroundWindow)之外,代码不会调用DllImport,但是从不调用它们(主实例不使用它.其他实例会这样做,但它们会活几秒钟).
不知何故,这段代码正在泄露.我如何找出问题所在?
托管代码中的内存泄漏通常是由于对象被非预期的引用保存在内存中.事件罪犯是这里常见的罪魁祸首.
您将需要获取内存分析工具.SciTech的.NET Memory Profiler可能是最好的,虽然JetBrains的dotTrace和RedGate的ANTS也都很好.
微软有一个免费的分析工具,CLR Profiler,可以使用,虽然它有点复杂.请参阅此处和此处获取一些指导.
.NET的DRONE分析器似乎有免费的个人许可证,但我自己并不熟悉该工具.他们在寻找内存泄漏与他们探查的文章在这里.
Visual Studio的高端版本还包含分析工具.MSDN包含有关如何使用它们的文档.