C# 大对象堆和IDisposable

C# 大对象堆和IDisposable,c#,.net,C#,.net,我正在使用.NET4.0,我需要在程序运行期间创建大量图像。据我所知,图像存储在LOH中。Image.Dispose()方法是否释放LOH中的内存?我试着使用profiler,我看到了很多通过GC进行的SOH清理,但应用程序的内存使用仍然在增加。所有的内存释放只有在我调用 GC.Collect(); GC.WaitForPendingFinalizers(); 所以看起来图像的dispose方法不会释放LOH内存 IDisposable是一种管理非托管资源(非托管内存或其他东西,如文件句柄)

我正在使用.NET4.0,我需要在程序运行期间创建大量图像。据我所知,图像存储在LOH中。Image.Dispose()方法是否释放LOH中的内存?我试着使用profiler,我看到了很多通过GC进行的SOH清理,但应用程序的内存使用仍然在增加。所有的内存释放只有在我调用

GC.Collect(); 
GC.WaitForPendingFinalizers();

所以看起来图像的dispose方法不会释放LOH内存

IDisposable
是一种管理非托管资源(非托管内存或其他东西,如文件句柄)生存期的机制。LOH用于托管内存。因此,是的,调用
Dispose
很可能对托管堆的使用没有任何影响,因为这两件事没有任何共同之处。

IDisposable
几乎与GC没有任何关系(至少是直接的),因此基本上:没有。另外,请注意,GC甚至不会无缘无故地主动将内存交还给操作系统。是什么让你觉得有问题?@MarcGravel我对我的应用程序做了一些压力测试,我发现在测试过程中内存使用量增加了。分析什么也得不到,因为在执行快照时所有内存都会释放。所以我想,我的图像的问题,存储在LOH中。这会导致内存不足异常