WPF DynammicResource 洩露問題

2021-07-03 14:39:13 字數 791 閱讀 2855

最近工作中,.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...