wpf C#中的内存泄漏
我正在使用GalaSoft.MvvmLight套件和WPF Toolkit for DataGrid
和DatePicker
开发WPF MVVM(在v3.5中)应用程序。 但是,每次在MainWindow
加载UserControl
时,我都会在应用程序中遇到大量内存泄漏。 我试图通过Scitech Memory Profiler获得确切的问题,尽管我有一些严肃的问题:
- 如何从VM中的
Event
取消挂钩/取消绑定RelayCommand
? - mscorlib和PresentationFramework也消耗大量内存,其中大部分都是
strings
。 我不知道他们来自哪里。
请帮忙。
看看这些文章,了解WPF内存泄漏的原因,解决方案以及如何找到它们 –
在基于WPF的应用程序中查找内存泄漏:
https://blogs.msdn.com/b/jgoldb/archive/2008/02/04/finding-memory-leaks-in-wpf-based-applications.aspx
WPF应用程序中的内存泄漏:
https://svetoslavsavov.blogspot.com/2010/05/memory-leaks-in-wpf-applications.html
在WPF和Silverlight应用程序中查找托管内存泄漏:
https://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的内存泄漏修补程序
https://blogs.msdn.com/b/jgoldb/archive/2010/06/14/memory-leak-hotfixes-for-wpf-3-5-sp1.aspx
一些更罕见的导致内存泄漏的情况 –
https://blog.ramondeklein.nl/?p=58
https://code.logos.com/blog/2008/10/detecting_bindings_that_should_be_onetime.html
你确定这些是内存泄漏吗? 你正确使用了探查器吗? 要确认您有内存泄漏, 必须运行垃圾回收器,以便删除堆栈框未引用的所有对象。 运行垃圾收集器后,检查堆内存以查找应该收集的对象。
例如,在您的应用程序中,打开视图或文档,关闭它,垃圾收集器,然后检查它是否已被删除。
上述就是C#学习教程:wpf C#中的内存泄漏分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/952366.html