我们通过继承WPFcontrols作为基础并根据需要定制它来使用许多自定义控件。
但是,即使关闭了使用控件的页面,这些控件使用的内存也不会被释放,直到整个应用程序关闭为止。
随着越来越多的内存被阻止,这些应用程序必须工作一整天,性能会下降。
当我们分析我们的页面时,我们发现控件没有被收集,因为那里有一些绑定引用或某些边框或画笔等没有从该控件中清除。
我们尝试使用控件的Unload事件来从控件中删除事件和一些引用。这在一定程度上减少了泄漏,但这减缓了页面的关闭,当控制甚至崩溃时,卸载事件也被触发。
还有其他方法可以克服泄漏吗?是否有任何防止内存泄漏的最佳实践?
由于
Arvind的
答案 0 :(得分:1)
您使用的是静态会员吗? (特别是收藏和活动)
如果是这样,请务必在卸下控件时将其删除。
编辑:我的意思是在你完成一个控件(当它的页面被关闭)之后,你应该从可视树中删除它,调用Dispose on it,并使用内存分析器确保它没有被引用到任何地方。
使用内存分析器找出泄漏的对象及其原因。