【发布时间】:2012-04-30 18:31:09
【问题描述】:
我有一个使用 MVVM Prism 编写的 WPF 应用程序。它有很多标签。这些选项卡每个消耗大约 2..3 MB 的内存。客户抱怨说,在打开和关闭几十个选项卡后,应用程序消耗的内存比一开始时要多得多。此外,打开新标签页需要更多内存,因此应用程序不会使用旧标签页而是创建新标签页。
很明显旧标签不会被垃圾回收。显然是因为有一些链接指向它们。
如何以任何方式对它们进行垃圾收集?我应该只实现 IDisposable,并删除所有可能的引用吗?并确保在析构函数中也调用了 Dispose 方法?我不确定是否可以删除所有不需要的引用。
也许我可以使用一个很好的工具来帮助我解决这个问题?
【问题讨论】:
-
“显然是因为有一些链接指向它们”可能不是真的。如果 GC 感觉不像垃圾收集,即使没有引用,它们也会留在内存中。
-
@stijn 我已经调用了 GC.Collect,但它们仍然留在内存中。
标签: .net wpf memory-leaks garbage-collection prism-4