Sau*_*aul 4 .net c# arrays memory-management
这个抛出一个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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据文档,数组长度必须只是一个正32位整数,但显然这不是唯一需要注意的限制.
为什么在这种情况下内存耗尽?
除了明显的"内存不足"语义之外,还有一些稍微更为细微的堆碎片问题:可能有超过2Gb或RAM可用,但它可能不是连续的.
这称为碎片.dotNET有一个堆分析器,可以在这种情况下显示.