最近工作中,.net 4.0環境下,wpf專案發現記憶體洩露問題,經過一系列跟蹤分析,發現是style中資源的動態資源引起的。具體什麼原因,還未搞明白,特此寫出來,跟碼友交流。
先針對發現的問題,做了個小測試程式,如下。
mainwindow.xaml:
mainwindow.xaml.cs:
public mainwindow()
;timer.start();
}
在resources目錄下存放的是兩個資源檔案
本文的重點在於resources/resource.xaml:
resources/styles.xaml:
用.net memory profiler 4.0 分析得到分析圖如下,可見記憶體例項數在增加。
在overview表中,看到例項數增加首當其衝的是system.weakreference.
雙擊進去看呼叫堆疊情況:
正是我們在定時器裡週期執行的設定control.isenabled操作。
在style中的trigger中,我麼修改了background的值,但是background這值在模板中並未用到。相反,我將模板修改,用上background,**:
這樣再執行監視下,沒發現記憶體增加。
此現象具體原因不明,望指教。
deepcopy引起的LUA記憶體洩露的問題
網路遊戲專案中,lua引起的記憶體洩露的一次事故。在用lua的時候,某種情況下,很多同學都喜歡把物件拿來深度拷貝,雖然我是不太喜歡這麼幹,但專案組開發的同學比較多,也難免別人不會這麼幹。當乙個table裡存在交叉引用的時候,用deepcopy就會出現嚴重的記憶體洩露,實際證明,deepcopy並不會...
利用壓力測試來保證軟體的質量 四 記憶體洩露問題
這是實際產品中的乙個嚴重的記憶體洩漏的bug,這樣描述的 wmp iteration 0 1 2 3 4 5 6 7 8 9 10 free mem mb 133.83 133.51 133.33 133.17 132.94 132.80 132.64 132.48 132.32 132.16 13...
記憶體洩露檢測及cvClone造成的洩露
調了幾個小時,到最後發現記憶體洩露的原因是opencv的cvclone函式,採用cvcopy函式後,問題解決。vs2010使用vld進行記憶體洩露檢測 2 將d program files visual leak detector include d program files visual lea...