看这个,似乎 Single 是 C# 中内存要求最低的非整数。如果我创建:
Single[,] data = new Single[100000000, 10];
我得到一个:
System.OutOfMemoryException
这是否取决于我的机器的可用 RAM?我可以在内存中保留这样的数组或更大的数组吗?谢谢。
这是否取决于我的机器的可用 RAM?
在某种程度上,是的。不能有明显大于内存的对象。然而:
我可以在内存中保留这样的数组或更大的数组吗?
32 位进程的最大大小为 2GB(特殊例外为 3GB(。但即使在使用 64 位进程的 64 位系统上,单个 .NET 对象的大小也不能超过 2 GB。因此,您可以有两个 1.5 GB 的大阵列,但不能有一个 3 GB 的大阵列。而你的似乎远高于这个尺寸。
正如评论者所指出的,在更高版本的 .NET 中,有一种方法可以绕过此限制:
把它放在你的 App.config 文件中:
<configuration>
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
</configuration>