c# 2中字节数组内存不足
本文关键字:数组 内存不足 字节数 字节 | 更新日期: 2023-09-27 18:18:54
FileStream fs = File.OpenRead(fullFilePath);
try
{
Console.WriteLine("Read file size is : " + fs.Length);
byte[] bytes = new byte[fs.Length]; //// **error this line**
fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
fs.Close();
return bytes;
}
finally
{
fs.Close();
}
read file size 2,885,760 KB
。是错误//
**Arithmetic operation resulted in an overflow.**
文件大小大于2GB问题是new byte[OverTwoBillionAndSome]
超标。如果长度小于 2GB,则不会发生此错误(尽管仍建议不要将其完全读入内存)。
考虑用流式传输数据
byte[] bytes = new byte[fs.Length];
2,885,760
大于2GB。你确定你的内存有足够的空间吗?很可能不是,这就是为什么会出现内存不足异常。
即使你有足够的内存空间,一个普通的32位也不能分配那么多的内存
正如Paul 所说的,问题是文件太大了。
但是在。net Framework 4.5中,你可以使用<gcAllowVeryLargeObjects>
Element,它支持你使用总大小大于2gb的对象。
在64位平台上,启用大于2gb的数组(GB) .
你只需要改变你的配置设置,像;
<configuration>
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
</configuration>