我面對這張圖,剖析我的應用程序的內存使用情況時:「分析器圖」中的「非託管內存」。這是內存泄漏指示嗎?
正如你可以看到,前行的「快照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管道系統沒有什麼可以做或應該做的。 –