Wpf xbap应用程序中的内存泄漏

Wpf xbap应用程序中的内存泄漏,wpf,memory-leaks,Wpf,Memory Leaks,我们通过继承WPFcontrols表单作为基础并根据需要对其进行定制,使用了许多自定义控件 但是,即使在关闭使用这些控件的页面之后,这些控件使用的内存也不会释放,直到整个应用程序关闭 由于这些应用程序必须工作一整天,随着越来越多的内存被占用,性能会下降 当我们分析我们的页面时,我们发现没有收集控件,因为没有从该控件清除一些绑定引用、一些边框或笔刷等 我们尝试使用控件的Unload事件从控件中删除事件和一些引用。这在一定程度上减少了泄漏,但这减慢了页面的关闭速度,并且在控件甚至崩溃时触发了卸载事件

我们通过继承WPFcontrols表单作为基础并根据需要对其进行定制,使用了许多自定义控件

但是,即使在关闭使用这些控件的页面之后,这些控件使用的内存也不会释放,直到整个应用程序关闭

由于这些应用程序必须工作一整天,随着越来越多的内存被占用,性能会下降

当我们分析我们的页面时,我们发现没有收集控件,因为没有从该控件清除一些绑定引用、一些边框或笔刷等

我们尝试使用控件的Unload事件从控件中删除事件和一些引用。这在一定程度上减少了泄漏,但这减慢了页面的关闭速度,并且在控件甚至崩溃时触发了卸载事件

有没有其他方法来克服泄漏?是否有防止内存泄漏的最佳做法

谢谢


Arvind

您是否使用任何静态成员?(特别是收藏和活动)

如果是这样,请确保在卸载控件时将其移除

编辑:我的意思是,在完成控件的操作后(当其页面关闭时),您应该将其从可视树中删除,对其调用Dispose,并使用内存探查器确保其未在任何位置被引用


使用内存探查器找出泄漏的对象及其原因。

我已经删除了页面中的集合和事件,在使用探查器时,我从custon控件中找到了majoy泄漏id,如果我尝试在控件中使用我提到的eunload事件,关闭时间会变得非常慢。我使用了一个profiller来分析分析并删除Controlls的某些实例后,我的应用程序将从内存中删除。但是它使页面关闭非常缓慢,因为它会卸载页面中的每个控件,因为可能有很多控件,它会增加关闭时间。