【发布时间】:2011-05-24 12:14:55
【问题描述】:
我想知道内存是否真的泄漏了。我的场景是这样的:
- 我的 .Net 应用程序占用了 x 量的内存。
- 我打开了一些对话框,现在它需要 x+y 的内存量
- 关闭所有最近打开的对话框
- 仍然记忆在 x + Y 左右
这是内存泄漏还是垃圾收集器没有清除内存的情况。
并且作为事件也被视为参考。如果事件出现在取消引用的对象中怎么办?那么该事件不会被视为参考,对吗?
【问题讨论】:
-
您的问题含糊不清。你会提供更多信息吗?发布一些代码或给我们一个导致内存泄漏的真实场景。
-
只想知道:由于即使在关闭打开的对话框后内存也没有被释放,这是否意味着它的内存泄漏或者可能是内存仍未被垃圾收集/
-
分配内存很昂贵。 .NET 应用程序分配内存,但除非必要,否则不要将其返回给系统。别再看任务管理器了;它什么也没告诉你。当您获得 OOME 时,您就会知道存在泄漏/内存问题。
-
除了 Wills 评论之外,您还应该尝试多次打开/关闭对话框,以查看消耗是否真的再次攀升。为了确定你需要像 redgate 的 ANTS 这样的内存分析器。
标签: c# memory-management memory-leaks