當我運行我的應用程序針對.NET 3.5它有大量的內存泄漏。每次我將UserControl分配給本地參考時,都有50mb。我只創建每個UserControl的一個實例。如果我編譯並運行鍼對.Net 4.0的相同代碼,則所有內容都可以在50mb標記周圍徘徊。如何避免.net 3.5上WPF上的大量內存泄漏?
這是一個已知的isue與3.5?即它在產品中不可用?
/我的客戶只有3.5,並不會被移動到4.0一段時間,所以我沒有容易的選擇
當我運行我的應用程序針對.NET 3.5它有大量的內存泄漏。每次我將UserControl分配給本地參考時,都有50mb。我只創建每個UserControl的一個實例。如果我編譯並運行鍼對.Net 4.0的相同代碼,則所有內容都可以在50mb標記周圍徘徊。如何避免.net 3.5上WPF上的大量內存泄漏?
這是一個已知的isue與3.5?即它在產品中不可用?
/我的客戶只有3.5,並不會被移動到4.0一段時間,所以我沒有容易的選擇
內存泄漏的修補程序的WPF 3.5 SP1
http://www.infoq.com/news/2010/06/WPF-Memory-Leaks
特別是,看看這兩個修補程序,已被固定在.NET 4.0中,但可作爲修補程序到.NET的用戶3.5:
不錯的鏈接。然而,這些似乎主要是指WeakReferences的短期記憶壓力。 – 2010-11-01 18:13:38
該死的你crapy WPF!感謝,似乎已經解決了這個問題。但我不能要求我的所有客戶都應用這些修補程序。有沒有解決方法? – DayTwo 2010-11-01 18:18:53
@DayTwo:我懷疑它;修補程序必須部署。如果您的軟件具有自動更新功能,則可以將其納入該軟件。 – 2010-11-01 18:20:04
是什麼讓你認爲這是一個漏洞,而不僅僅是內存有不被垃圾收集了嗎?在您關心的探查器中,數字之外是否存在某些影響?如果沒有,爲什麼要擔心。你寧願你的程序使用可用內存,還是寧願使用CPU週期來恢復未使用的對象?
因爲在很多gui交互之後它會拋出一個OutOfMemory異常。 GC從不回收,因此泄漏。 – DayTwo 2010-11-01 18:09:28
我想看看這樣做的代碼。它比代碼更容易在代碼中出現錯誤......而4.0只是更好地處理該錯誤。 – 2010-11-01 18:10:50
對不起,請解釋一下嗎?在.Net 4.0上的代碼很好。 – DayTwo 2010-11-01 18:08:35
你用什麼來確定內存使用情況?如果它是任務管理器,則應該知道使用它是非常不準確的。 – 2010-11-01 18:09:04