WPF性能调试系列 – 内存监测
WPF性能調(diào)試系列文章:
? ??WPF頁面渲染優(yōu)化:Application Timeline
? ??WPF頁面業(yè)務加載優(yōu)化:Ants Performance Profiler
? ??WPF內(nèi)存優(yōu)化:Ants Memory Profiler
?
內(nèi)存監(jiān)測(Ants Memory Profiler)
??? Ants Memory Profiler是專門針對于.net程序的內(nèi)存動態(tài)分析工具,通過實時監(jiān)測WPF程序中每個對象分配的內(nèi)存空間大小,來提供多樣式報告展示內(nèi)存的使用情況。我們可根據(jù)分析結(jié)果進行指定對象的優(yōu)化。
? ? 從RedGate官網(wǎng)下載,下載地址為http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/
?
模擬分析應用程序
打開Ants Memory Profiler,通過菜單File -> New Profiling Session...(Ctrl+N)打開新的監(jiān)測會話,在可監(jiān)測程序類型中選擇.Net executable。
?
?
開始執(zhí)行后,wpf應用會打開執(zhí)行,操作應用并實時監(jiān)測內(nèi)存使用情況,對于內(nèi)存使用較高地方進行Take Memory Snapshot:
?
注:一次內(nèi)存分析可進行多次內(nèi)存點拍照。比如程序剛運行進行拍照,運行一段時間之后再次拍照,這樣可通過對比兩次拍照的內(nèi)存差別分析出對象占用內(nèi)存情況,更便于分析問題。
?
一個拍照監(jiān)測點結(jié)果分析:
?
可參考具體詳解:https://documentation.red-gate.com/display/AMP8/The+summary+page
注:1. 托管對象如果內(nèi)存使用過高,考慮是否緩存數(shù)據(jù)過大,托管資源一般無需過多考慮,可等待.net垃圾回收器進行自行回收。
?? 2. 非托管資源如果占用內(nèi)存過高,需要進行手動釋放,因為費托管資源是無法自動被.net垃圾回收器回收 – 非托管資源包括:GUI+,圖片操作,文件操作,win32調(diào)用等
?
多個拍照監(jiān)測點結(jié)果對比分析:
?
?
具體類視圖分析:
?
可參考具體詳解:https://documentation.red-gate.com/display/AMP8/The+class+list
?
具體對象分析:
?
可參考具體詳解:https://documentation.red-gate.com/display/AMP8/The+instance+list
?
內(nèi)存泄露主要原因分析:靜態(tài)引用、未注銷的事件綁定、非托管代碼資源使用等。對于靜態(tài)對象盡量小或者不用,非托管資源可通過手動Dispose來釋放。
總結(jié)
以上是生活随笔為你收集整理的WPF性能调试系列 – 内存监测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python高级爬虫框架Scrapy简介
- 下一篇: 新个税法通过,起征点每月5000元,一图