【发布时间】:2013-06-19 11:22:40
【问题描述】:
有一个 winforms 应用程序,其中几个表单非常复杂 - 使用数据集、与网格和组合框的多个绑定..
每次打开表单时,内存使用量都会增加大约 2-5 MB,直到出现 OutOfMemoryException。
我对每个IDisposable 使用using 语句(也用于Forms),尝试清除所有绑定并取消订阅Dispose()中的事件,没有任何改变。
如果我在处理表单后调用GC.Collect(),则使用的内存量会返回之前的状态,就像打开表单之前一样。
我尝试了一些内存分析器,但它们没有显示任何异常。
【问题讨论】:
-
你在缓存数据吗?
-
您是否尝试过在分析器中拍摄快照以查看未清除的资源是什么?这可能会给你一个方向
-
我认为我没有缓存任何数据。我已经拍摄内存快照并分析了一周,但没有发现任何可能表明内存泄漏的东西。
-
打开表单时加载了多少数据?
-
在快照之间你看到内存的不同了吗?在它的哪些部分?当然,如果你得到应该反映在快照中的内存异常(可能在非托管资源中)。
标签: c# .net winforms memory-leaks