【发布时间】:2012-06-03 22:57:32
【问题描述】:
最近我注意到我的 WPF 项目中存在严重的内存泄漏。如果简化项目,它有一个登录表单和一个主表单。在主窗体中,有 1 个用户控件由大约 30 个用户控件和 3 个按钮组成,1 个用户控件具有 3 个按钮和一个 Infragistics 数据网格。我使用后台工作人员每 30 秒查询一次数据库,仅为数据网格。
在我使用 main form.close 注销主窗体并重新启动登录窗口后,我注意到每次 ANTS memory profiler 7 测量到 6-7MB 增加。即使我有未注册的事件处理程序,设置变量为 null 并调用 GC.Collect(),内存泄漏仍然相同。我的问题是: 1、为什么关闭wpf窗口不释放内存和资源?我可以看到许多字符串(大部分来自 GUI)在 ANTs 分析器关闭窗口后仍在内存中。 2. 资源事件设置器定义的事件是否需要注销?我是否需要取消注册在 XAML 中声明的事件? 3. 从WPF memory leak,人们说我们不应该使用GC.Collect(),但我确实看到了一些改进。用还是不用?
【问题讨论】:
标签: wpf memory-leaks