我已经创建了一个从WPF中的wpf数据网格控件继承的自定义数据网格控件。
因此,当用户查询数据库时,数百条记录返回,每条记录有15到20列。
我相信当我控制屏幕时,所有分配给此屏幕及其网格的内存都应由GC回收。但事实并非如此。
我正在Red Gate的Memory Profiler中测试我的应用程序,当我打开分配给它的30 mb内存时,它会显示。
但是当我关闭这个屏幕时,应用程序仍然保留在那个内存中,当我在蚂蚁内存分析器中查看原因时,它显示我的屏幕实例仍然在内存中,因为我的自定义数据网格。 / p>
我已将卸载事件添加到我的用户控件中,并分离了我在此过程中附加的所有事件处理程序。
我错过了什么,我该怎么办?
答案 0 :(得分:0)
您不必处置UserControl,您可能不应该构建IDisposable UserControl。那是一种设计气味。内存分析器可以告诉您为什么应用程序仍然保留在该内存中,然后您必须修复该错误。
更新:
要找出在ANTS中实际持有该内存的用户,请使用Instance Retention Graph功能。在.NET Memory Profiler中(我更喜欢ANTS),它被称为Root Path。