ByteArray OutOfMemory例外

时间:2015-12-15 14:07:24

标签: c# out-of-memory bytearray filestream

using (FileStream stream = File.OpenRead(filePath))
{
   var data = new byte[stream.Length];
   stream.Read(data, 0, data.Length);
}

我在该行抛出了OutOfMemoryException(不是在流读取期间,而是在字节初始化期间:

data = new byte[stream.Length];

[编辑15-12-2015]

文件大小约为600MB,但最高可达2GB。

较短版本的代码也失败了:

var data = File.ReadAllBytes(filePath);

1 个答案:

答案 0 :(得分:1)

您的文件大小是否超过 2 GB 并且您使用的是 32位系统?看起来你超出了限制,没有一个对象可以大于2 GB(至少在32位系统的情况下)。考虑改为流式传输数据。 但是使用.NET Framework 4.5,您可以使用<gcAllowVeryLargeObjects>元素支持您使用总大小超过2 GB的对象。

以下是您必须使用的配置;

<configuration>
  <runtime>
    <gcAllowVeryLargeObjects enabled="true" />
  </runtime>
</configuration>