我正在编写一个使用许多非托管DLL的WPF应用程序。程序中的某些东西导致内存泄漏,我使用Redgate ANTS 8 Memory Profiler监控应用程序。 ANTS显示MSVCR110.dll的内存使用量不断增加。
问题是托管代码是否可以通过使用MSVCR110.dll导致此泄漏?
如果没有,我能否找到哪些非托管dll正在使用MSVCR110.dll并导致泄漏?
(我的程序直接引用了MSVCR110.dll。)
答案 0 :(得分:0)
拍摄一些快照,看看是否有任何托管对象增长。您可以在ANTS内存分析器中选择具有源选项的对象,并且如果实例计算它对任何对象的增长。然后,您可以查看任何增长实例的“实例保留图”,并查看哪个包含引用。
此外,请确保取消订阅您对第三方组件的任何订阅,并调用dispose并相应地设置空指针。
答案 1 :(得分:-1)
答案不容易找到。我曾经尝试过每个我怀疑的DLL。泄漏是C ++ / CLI包装器类中的未删除数组。因为它是一个托管的dll,我想,本土的"新的"通过msvcr110.dll跟踪调用,并且ANTS在该DLL中显示泄漏。