2011-05-27 45 views
2

我正在開發一個使用GalaSoft.MvvmLight套件和WPF工具包的WPF MVVM(v3.5)應用程序,用於DataGridDatePicker。但是,我每次在MainWindow中加載UserControl時,我都會在應用程序中遇到大量內存泄漏。我想獲得通過賽特存儲器剖析確切的問題,雖然我有一些嚴肅的問題:wpf中的內存泄漏C#

  1. 如何解開/解除綁定的VM的EventRelayCommand
  2. mscorlib和PresentationFramework也消耗大量的內存,其中大部分是strings。我不知道他們來自哪裏。

請幫忙。

回答

2

你確定這些是內存泄漏嗎?你是否正確使用探查器?要確認您有內存泄漏,您必須必須運行垃圾回收器,以便刪除不是由堆棧引用的所有對象。運行垃圾回收器後,檢查堆內存是否應該收集對象。

E.g.在您的應用程序中,打開一個視圖或文檔,關閉它,垃圾收集器,然後檢查它是否已被刪除。

3

看一看這些文章就知道在WPF內存泄漏的原因,有解決方案,以及如何找到它們 -

查找內存泄漏在WPF基於 應用:

http://blogs.msdn.com/b/jgoldb/archive/2008/02/04/finding-memory-leaks-in-wpf-based-applications.aspx

內存泄漏在WPF應用程序:

http://svetoslavsavov.blogspot.com/2010/05/memory-leaks-in-wpf-applications.html

在WPF

查找託管內存泄漏和Silverlight應用程序:

http://blogs.msdn.com/b/wpftesting/archive/2009/03/21/finding-managed-memory-leaks-in-wpf-and-silverlight-applications.aspx

如果您正在使用WPF 3.5 SP1,看看這些補丁程序 -

內存用於WPF 3.5 SP1的泄漏修補程序

http://blogs.msdn.com/b/jgoldb/archive/2010/06/14/memory-leak-hotfixes-for-wpf-3-5-sp1.aspx

一些更罕見的情況下導致內存泄漏 -

http://blog.ramondeklein.nl/?p=58

http://code.logos.com/blog/2008/10/detecting_bindings_that_should_be_onetime.html

+0

嘗試:http://www.deleaker.com/ – 2011-12-27 21:21:51