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來釋放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章