阅读后C# 字符串(和其他 .NET API)的大小是否限制为 2GB?我在 .NET 3.5 中使用过大字符串和数组。我发现我可以分配的最大数组是int.MaxValue - 56
字节。字符串的类似情况:我能得到的最大的是(int.MaxValue - 58) / 2
字符(因为每个字符占用 2 个字节)。之后它抛出OutOfMemoryException
。
为什么会存在这种限制?并不是说我在实践中遇到过它——我只是对 .NET 的内部工作原理感到好奇。
是的,这当然是在具有大量 RAM 的 64 位机器上 - 是的,该进程作为 64 位进程运行。(我实际上可以分配 3 个这样的数组或字符串,总内存使用量为 6GB。)