Mig*_*oom 2 c# foreach garbage-collection
我有一个foreach循环,我用图像做一些操作.OutOfMemoryException
当我用50多张图像运行这段代码时,我得到了一个; 因为图像实例各15 MB.
var files = Directory.GetFiles(path).ToList();
foreach (var file in files)
{
Image image = new Bitmap(file);
//Do some operations
}
Run Code Online (Sandbox Code Playgroud)
我删除了主要逻辑,因为这个小代码仍然存在这个问题.当我添加GC.Collect();
foreach循环时,问题就消失了,我没有得到异常.
我的问题是:垃圾收集器是否太慢而无法在不调用Collect
方法的情况下清理不再需要的图像,或者我是否遗漏了其他内容?
之前没有注意到这个问题.我从未想过会出现问题,因为//Do some operations
每个图像需要约1秒.应该是我想的垃圾收集器的足够时间.
也许你应该合作using
:
var files = Directory.GetFiles(path).ToList();
foreach (var file in files)
{
using (Image image = new Bitmap(file))
{
// do work
}
}
Run Code Online (Sandbox Code Playgroud)
这种方式Bitmap
将在迭代后处理