我已经阅读了几个关于这个主题的问题/答案,但是它们让我更加困惑。这是交易:
我有一个从磁盘读取许多图像的应用程序。即使我有足够的 RAM 来读取这么多字节,我System.OutOfMemoryException
还是在读取数据时得到了,甚至在开始处理它们之前。
这是我的阅读过程,基本上:
class Image
{
float[,] pixels;
}
public static void ReadImages()
{
List<Image> images = new List<Image>();
for(int i=0;i<length;i++)
{
Image image = ReadImageFromDisk(); // Reads image from the disk.
if ( Do I need this image? ) // Check whether to store on the memory or not
{
images.Add(image);
}
}
}
我使用的原因List<Image>
基本上是我不知道Image
我要在内存中存储多少。我正在Image
从磁盘读取图像,然后决定是否将该图像存储在内存中。
进行基本的内存计算:
= 28 (image width) x 28 (image height) x 4 (float) x 500,000 (number of images)
= 1568000000 bytes = 1.568 Gigabyte
我使用的是 64 位 Windows 7,并且安装了 16 GB 的 RAM。为什么我得到OutOfMemory
异常?