【发布时间】:2019-09-14 10:54:51
【问题描述】:
我已经从一个窗口导航到另一个模态窗口。有 10 个可观察的集合。关闭窗口后,我将 null 设置为所有可观察的集合。但是在任务管理器中,内存并没有减少。当我打开模态窗口时,增加了 25 mb,但是当我关闭窗口时,只有 1mb 或 2mb 在处理所有可观察的集合后才减少。
private bool disposedValue = false;
protected virtual void Dispose(bool disposing)
{
if (!disposedValue)
{
if (disposing)
{
Collection1 = null;
Collection2 = null;
Collection3 = null;
Collection4 = null;
Collection5 = null;
}
disposedValue = true;
}
}
请建议我做错了什么。请分享您的宝贵建议。我还检查了 Visual Studio 诊断工具中的内存消耗。
【问题讨论】:
-
当您将集合设置为 null(这是对它们的最后一次引用)时,垃圾收集器能够释放内存。就这样。但是垃圾收集器只会在内存压力很高或者你强制它收集时才会这样做(你应该只出于调试原因这样做)
-
使用这个thread 有很多与此相关的解释清楚的例子
标签: c# wpf memory-leaks prism idisposable