OutOfMemory加载大量小图像时出现异常

时间:2010-04-02 20:25:37

标签: .net image out-of-memory

我正在尝试将大约600张小图片加载到内存中。每个图像文件的大小小于2 KB(20 x 30)。因此,即使有关于大小,格式等的附加信息,所有图像在内存中也需要至多5 MB。 但是在第400张图像之后Image.FromFile()会抛出OutOfMemory异常。

那么,问题是什么?

2 个答案:

答案 0 :(得分:5)

当你处理OutOfMemoryException方法时,Image.FromFile有点用词不当。在某些情况下,实际上没有内存不足的情况下,FromFile方法将抛出OutOfMemoryException。即

  • 文件没有有效的图片格式
  • GDI +不支持像素格式

文档:http://msdn.microsoft.com/en-us/library/stf701f5.aspx

我认为如果你调试到这个,你会发现它是一个非常具体的文件,每次都会导致这个问题。尝试从列表中删除该文件,看看它是否能解决您的问题。

答案 1 :(得分:0)

目前还不清楚你在做什么,所以我要在这里采取刺...

请记住,如果您正在加载压缩图像,则解压缩这些图像时也会产生内存开销。如您所知,作为BMP,2KB JPG会大得多。在处理这些图像并考虑内存要求时,请将这些要求视为BMP而不是JPG。然后,你没有600x2KB(小于2MB),你真的有600x100KB(60MB),加上一些其他misc开销,这可能是非常重要的(取决于垃圾收集和当你处置对象时,开销可能是2- 3x是60MB)。