WPF性能調試系列 – 內存監測


WPF性能調試系列文章:

    WPF頁面渲染優化:Application Timeline

    WPF頁面業務加載優化:Ants Performance Profiler  

    WPF內存優化:Ants Memory Profiler

 

內存監測(Ants Memory Profiler)

    Ants Memory Profiler是專門針對於.net程序的內存動態分析工具,通過實時監測WPF程序中每個對象分配的內存空間大小,來提供多樣式報告展示內存的使用情況。我們可根據分析結果進行指定對象的優化。

    從RedGate官網下載,下載地址為http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

 

模擬分析應用程序

打開Ants Memory Profiler,通過菜單File -> New Profiling Session...(Ctrl+N打開新的監測會話,在可監測程序類型中選擇.Net executable。

 

 

開始執行后,wpf應用會打開執行,操作應用並實時監測內存使用情況,對於內存使用較高地方進行Take Memory Snapshot:

 

注:一次內存分析可進行多次內存點拍照。比如程序剛運行進行拍照,運行一段時間之后再次拍照,這樣可通過對比兩次拍照的內存差別分析出對象占用內存情況,更便於分析問題。

 

一個拍照監測點結果分析:

 

可參考具體詳解:https://documentation.red-gate.com/display/AMP8/The+summary+page

注:1. 托管對象如果內存使用過高,考慮是否緩存數據過大,托管資源一般無需過多考慮,可等待.net垃圾回收器進行自行回收。

   2. 非托管資源如果占用內存過高,需要進行手動釋放,因為費托管資源是無法自動被.net垃圾回收器回收 – 非托管資源包括:GUI+,圖片操作,文件操作,win32調用等

 

多個拍照監測點結果對比分析:

 

 

具體類視圖分析:

 

可參考具體詳解:https://documentation.red-gate.com/display/AMP8/The+class+list

 

具體對象分析:

 

可參考具體詳解:https://documentation.red-gate.com/display/AMP8/The+instance+list

 

內存泄露主要原因分析:靜態引用、未注銷的事件綁定、非托管代碼資源使用等。對於靜態對象盡量小或者不用,非托管資源可通過手動Dispose來釋放。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM