1. 程式人生 > >WPF 內存泄漏優化經歷

WPF 內存泄漏優化經歷

href 問題 clas 發現 單擊 全部 image 主界面 分享圖片

原文:WPF 內存泄漏優化經歷

最近公司有個CS客戶端程序,有個登錄界面,有個程序的主界面,程序支持註銷功能,但是在註銷後,客戶端的內存一直以40M-50M的速度遞增,因此猜測,應該是WPF程序出現了內存泄漏。下面主要記錄優化內存泄漏的整個歷程:

1.使用VS2013的性能和診斷找到問題點

在VS2013菜單分析-》性能和診斷,打開的界面如下,並勾選內存使用率選項。

技術分享圖片

單擊開始,啟動程序,界面如下所示:

技術分享圖片

登錄後,等待程序資源全部獲取後,單擊VS2013中拍攝快照

技術分享圖片

註銷後,再次單擊拍攝快照按鈕

技術分享圖片

重復上述兩個步驟若幹次後,關閉軟件,內存分析工具會自動進行分析,分析後的結果如下圖所示:

技術分享圖片

選擇快照報告數據查看依據,托管堆和堆,我寫的程序中是在堆中發現快照2比快照會有40多M內存的上升,上面的圖片是優化後的。點擊上升的內存,可以進入快照1和快照2內存的對比的表格:

技術分享圖片

從這個前後內存的對比中,找到是由於主界面的在註銷時關閉,再次登錄後,主界面重新創建顯示,裏面ocx的內存發生泄漏。

WPF 內存泄漏優化經歷