处理WPF用户控制&内存管理

时间:2013-01-24 08:28:46

标签: wpf datagrid memory-leaks idisposable red-gate-ants

我已经创建了一个从WPF中的wpf数据网格控件继承的自定义数据网格控件。

因此,当用户查询数据库时,数百条记录返回,每条记录有15到20列。

我相信当我控制屏幕时,所有分配给此屏幕及其网格的内存都应由GC回收。但事实并非如此。

我正在Red Gate的Memory Profiler中测试我的应用程序,当我打开分配给它的30 mb内存时,它会显示。

但是当我关闭这个屏幕时,应用程序仍然保留在那个内存中,当我在蚂蚁内存分析器中查看原因时,它显示我的屏幕实例仍然在内存中,因为我的自定义数据网格。 / p>

我已将卸载事件添加到我的用户控件中,并分离了我在此过程中附加的所有事件处理程序。

我错过了什么,我该怎么办?

1 个答案:

答案 0 :(得分:0)

您不必处置UserControl,您可能不应该构建IDisposable UserControl。那是一种设计气味。内存分析器可以告诉您为什么应用程序仍然保留在该内存中,然后您必须修复该错误。

更新:

要找出在ANTS中实际持有该内存的用户,请使用Instance Retention Graph功能。在.NET Memory Profiler中(我更喜欢ANTS),它被称为Root Path