我面对这张图,剖析我的应用程序的内存使用情况时:“分析器图”中的“非托管内存”。这是内存泄漏指示吗?
正如你可以看到,前行的“快照1”非托管内存大约持有总使用内存的一半。然后,在“快照1”和2分55秒后(请参阅下面的时间表),我强制垃圾收集。如我所料,第二代大部分是收集的,但非托管内存没有被释放,现在它保存了大约90%的内存。总使用内存的2/3。
我不知道,在这种情况下,“非托管内存”是什么意思。 这是带有一些WinForms/GDI + interop的WPF应用程序。我相信,所有应该处置的东西都会被处置掉。此外,没有明确的平台互操作代码。托管内存的其余部分是可以的。
这是内存泄漏指示吗?
如果是这样,在这里检测内存泄漏的方法是什么?
这是重要的,我使用的探查器是JetBrains dotMemory。
WPF使用DirectX。也许这是非托管内存的来源? _ [WPF完全依赖Direct3D进行渲染](https://msdn.microsoft.com/en-us/library/aa663364.aspx)_ – MickyD
这只是一个真正的漏洞,如果它不断地建立并最终炸毁你的程序。一般来说,Profiler几乎没有什么体面的方法可以告诉你关于非托管内存的任何事情。当然,WPF应用程序会使用它很多。保留模式图形渲染很好,它不是免费的。在现代机器上不是真正的问题。将注意力集中在自己的代码中的泄漏处,对WPF管道系统没有什么可以做或应该做的。 –