问题描述
|
我正在使用GalaSoft.MvvmLight套件和适用于
DataGrid
和DatePicker
的WPF Toolkit开发WPF MVVM(在v3.5中)应用程序。但是,每次在MainWindow
中加载UserControl
时,应用程序中都会面临大量内存泄漏。我正在尝试通过Scitech Memory Profiler来获取确切的问题,尽管我有一些严重的问题:
如何在VM中从ѭ5脱钩/解除绑定RelayCommand
?
mscorlib和PresentationFramework也占用大量内存,其中大多数为6。我不知道它们来自哪里。
请帮忙。
解决方法
查看这些文章,以了解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
, 您确定这些是内存泄漏吗?您是否正确使用了探查器?要确认您有内存泄漏,必须运行垃圾回收器,以便删除所有不是由堆栈框架引用的对象。运行垃圾收集器后,检查堆内存中应收集的对象。
例如。在您的应用程序中,打开一个视图或文档,将其关闭,垃圾收集器,然后检查是否已将其删除。