如何释放位图在.net中占用的内存?



我正在做一些。net上的图像相关项目。当我这样做的时候:

while(true)
{
Bitmap m = new Bitmap(100,100);
m.Dispose();
}

内存使用率持续上升。为什么Dispose没有释放Bitmap使用的所有内存,我如何才能真正释放那块内存?

在我的实际工作中,我不能重用现有的位图,因为它可能在每次运行时都以不同的大小运行。我也不能使用扭曲它,因为位图创建发生在一个方法内,结果位图返回进一步的处理。

编辑:奇怪的是,我尝试了这个完全相同的真实代码,但内存使用似乎停止快速增长。我只是无法重现这种情况(至少在几分钟内,它一直缓慢地上升和上升,从不回落)
感谢您的所有答案,我会选择我能选择的唯一答案作为解决方案。

你不能,. net Runtime会在"需要/想要"的时候为你做。

。如果你想有一个"控制"在分配的内存中,您应该使用带有指针/不安全的非托管结构。

无论如何,如果你没有任何关于代码的性能问题。内存不足-你应该让它保持现状-运行时将在方便的时候释放内存。

如果你想了解更多关于GarbageCollector和如何在。net中管理内存,我可以推荐你一本书https://www.amazon.com/Pro-NET-Memory-Management-Performance/dp/148424026X

最新更新