【发布时间】:2018-03-15 15:41:48
【问题描述】:
我正在使用 .Net 4.0,我需要在我的程序工作期间创建大量图像。据我了解存储在 LOH 中的图像。 LOH 中的 Image.Dispose() 方法是否释放内存?我尝试使用分析器,我看到 GC 清理了很多 SOH,但应用程序的内存使用量仍然增加。并且只有在我调用时才会释放所有内存
GC.Collect();
GC.WaitForPendingFinalizers();
所以看起来图像的 dispose 方法不会释放 LOH 内存。
【问题讨论】:
-
IDisposable几乎没有(至少直接地)与 GC 有关系,所以基本上:没有。另请注意,GC 甚至不会尝试无缘无故地主动将内存交还给操作系统。是什么让您认为有问题? -
@MarcGravell 我对我的应用程序进行了一些压力测试,我发现在此测试期间内存使用量增加了。分析一无所获,因为当我做快照时所有内存都会释放。所以我认为,我的图像存在存储在 LOH 中的问题。这会导致内存不足异常