我正在尝试将大约600张小图片加载到内存中。每个图像文件的大小小于2 KB(20 x 30)。因此,即使有关于大小,格式等的附加信息,所有图像在内存中也需要至多5 MB。 但是在第400张图像之后Image.FromFile()会抛出OutOfMemory异常。
那么,问题是什么?
答案 0 :(得分:5)
当你处理OutOfMemoryException
方法时,Image.FromFile
有点用词不当。在某些情况下,实际上没有内存不足的情况下,FromFile方法将抛出OutOfMemoryException
。即
文档:http://msdn.microsoft.com/en-us/library/stf701f5.aspx
我认为如果你调试到这个,你会发现它是一个非常具体的文件,每次都会导致这个问题。尝试从列表中删除该文件,看看它是否能解决您的问题。
答案 1 :(得分:0)
目前还不清楚你在做什么,所以我要在这里采取刺...
请记住,如果您正在加载压缩图像,则解压缩这些图像时也会产生内存开销。如您所知,作为BMP,2KB JPG会大得多。在处理这些图像并考虑内存要求时,请将这些要求视为BMP而不是JPG。然后,你没有600x2KB(小于2MB),你真的有600x100KB(60MB),加上一些其他misc开销,这可能是非常重要的(取决于垃圾收集和当你处置对象时,开销可能是2- 3x是60MB)。