1. 程式人生 > >WPF 記憶體洩漏優化經歷

WPF 記憶體洩漏優化經歷

最近公司有個CS客戶端程式,有個登入介面,有個程式的主介面,程式支援登出功能,但是在登出後,客戶端的記憶體一直以40M-50M的速度遞增,因此猜測,應該是WPF程式出現了記憶體洩漏。下面主要記錄優化記憶體洩漏的整個歷程:

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

在VS2013選單分析-》效能和診斷,開啟的介面如下,並勾選記憶體使用率選項。

單擊開始,啟動程式,介面如下所示:

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

登出後,再次單擊拍攝快照按鈕

重複上述兩個步驟若干次後,關閉軟體,記憶體分析工具會自動進行分析,分析後的結果如下圖所示:

選擇快照報告資料檢視依據,託管堆和堆,我寫的程式中是在堆中發現快照2比快照會有40多M記憶體的上升,上面的圖片是優化後的。點選上升的記憶體,可以進入快照1和快照2記憶體的對比的表格:

從這個前後記憶體的對比中,找到是由於主介面的在登出時關閉,再次登入後,主介面重新建立顯示,裡面ocx的記憶體發生洩漏。