【发布时间】:2012-11-23 12:51:16
【问题描述】:
这个抛出一个OutOfMemoryException。
目标框架.NET 3.5,在64位Windows 2008 R2 Standard上运行。
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
byte[] test = new byte[Int32.MaxValue];
}
}
}
根据文档,数组长度必须是一个 32 位正整数,但显然这不是唯一需要注意的限制。
为什么在这种情况下内存会耗尽?
【问题讨论】:
-
嗯,你知道的,它可能内存不足
-
其他数据结构,如 List
动态分配内存,虽然这可能有一些性能劣势,但您可以避免在声明时耗尽内存。有没有理由宣布如此庞大的数组? (我可能应该说“动态调整大小”而不是分配) -
@sehe - 内存可用,但原来有一个硬编码的2GB limit to object size。
标签: c# .net arrays memory-management