阅读Are C# Strings (and other .NET API’s) limited to 2GB in size?后,我在.NET 3.5中使用了大型字符串和数组。我发现我可以分配的最大阵列是int.MaxValue - 56
字节。对于字符串类似的事情:我能得到的最大字符是(int.MaxValue - 58)/2
个字符(因为每个字符需要2个字节)。之后它会抛出OutOfMemoryException
。为什么我无法在.NET中创建大于2GB的对象,即使在x64上也是如此?
为什么这个限制存在?并非我在实践中碰到过它 - 我只是对.NET的内部工作感到好奇。
是的,这是在64位机器上有大量内存,当然 - 是的,这个过程是以64位进程运行的。 (我实际上可以分配3个这样的阵列或字符串,总共6GB的内存使用量。)
谢谢。这证实这是一个有意识的设计决定,尽管它并没有真正解释他们为什么做出这个决定。 – EMP 2010-06-25 08:29:23