【发布时间】:2011-06-14 22:14:09
【问题描述】:
我有一个标准的 CRUD 应用程序,可以处理大量数据。不同的窗口使用 Linq-To-SQL 访问不同的表,每个窗口本质上都有一个网格,其中的单元格绑定到我正在显示的对象。
这是正在发生的事情的一个非常标准的用例:
- 打开窗口A
- 关闭窗口 A - 窗口 A 现在仍在内存中,但不再可见。
- 打开窗口 B
- 关闭窗口 B - 窗口 A 和 B 现在都在内存中,并且都不可见。
- 打开窗口C
- 为 Window C 检索数据时,会释放 Window A 的资源。
因此,在任何给定时间,我都会在内存中保存 2-3 个窗口,而我真正应该拥有的只是一个。我什至在这些窗口的关闭事件中添加了处理代码,它将我能想到的所有引用设置为空。
我尝试使用 ANTS 内存分析器,我注意到每个窗口都设置为 GC 根。有没有办法禁用此行为或以某种方式强制 GC 从这些窗口收集?
谢谢!
PS:我检查了this link 并没有解决问题。
编辑:问题是用户得到 System.OutOfMemoryExceptions。
【问题讨论】: