最近公司有個CS客戶端程序,有個登錄界面,有個程序的主界面,程序支持注銷功能,但是在注銷后,客戶端的內存一直以40M-50M的速度遞增,因此猜測,應該是WPF程序出現了內存泄漏。下面主要記錄優化內存泄漏的整個歷程:
1.使用VS2013的性能和診斷找到問題點
在VS2013菜單分析-》性能和診斷,打開的界面如下,並勾選內存使用率選項。

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

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

注銷后,再次單擊拍攝快照按鈕

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

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

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