字节数组内存不足异常

本文关键字:异常 内存不足 数组 字节数 字节 | 更新日期: 2023-09-27 18:26:55

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);

字节数组内存不足异常

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

这是您必须使用的配置;

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