我有一个存在内存泄漏的 MVP 项目(它不是一个 Web 项目)。每次将数据从数据库加载到表单上的网格时,内存都会增加。我尝试使用 ANTS 和 .NET 内存分析器调查连接到该表单的每个对象。
打开/关闭表单时连接到表单的对象在 Instance Retention Graph 上如下所示:
A -> B : object1 标记在 ->; (参考资料) B -> A : object2 上的标记 ->; (引用)其中 A,B 是类
下一个方向是正确的方法吗?1. 在基类中实现来自msdn.comIDisposable
的pattern1在每个未实现的 .cs 模块中;
- 在派生类中从 msdn 实现 pattern2(覆盖
Dispose
方法的类) 将一些清除对象/其他引用(object.property,object.other_field)的函数放在
Dispose
方法的“托管资源”部分中当对象不再在该 .cs 中使用时,强制对象为 null 或 object.Dispose() (对每个 .cs 执行此操作?还是有其他方法)
我怎样才能强制所有这些方法和 GC 执行让我们明确地说在表单关闭时?
如果我从特定的 .cs 中删除对象就足够了吗?
谢谢