繁体   English   中英

Memory 泄漏 wpf C#

[英]Memory leaks in wpf C#

我正在使用 GalaSoft.MvvmLight 套件和 WPF Toolkit for DataGridDatePicker开发 WPF MVVM(在 v3.5 中)应用程序。 但是,每次我在MainWindow中加载UserControl时,我都会在应用程序中面临很多 memory 泄漏。 我试图通过 Scitech Memory 分析器得到确切的问题,尽管我有一些严重的问题:

  1. 如何从 VM 中的Event中取消挂钩/取消绑定RelayCommand
  2. mscorlib 和 PresentationFramework 也消耗了大量的 memory 并且其中大部分是strings 我不知道他们从哪里来。

请帮忙。

查看这些文章以了解 WPF 中 memory 泄漏的原因,有解决方案以及如何找到它们 -

在基于 WPF 的应用程序中查找 Memory 泄漏:

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

Memory WPF 应用程序中的泄漏:

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

查找 WPF 和 Silverlight 应用程序中的托管 Memory 泄漏:

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 的 Memory 泄漏修补程序

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

一些更罕见的情况导致 memory 泄漏 -

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

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

您确定这些是 memory 泄漏吗? 您是否正确使用了探查器? 要确认您有 memory 泄漏,您必须运行垃圾收集器,以便删除所有未被堆栈帧引用的对象。 运行垃圾收集器后,检查堆 memory 是否应该收集对象。

例如,在您的应用程序中,打开一个视图或文档,关闭它,垃圾收集器,然后检查它是否已被删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM