查看this,看来Single是C#中内存要求最低的非整数。如果我创建:
Single[,] data = new Single[100000000, 10];
我得到了:
System.OutOfMemoryException
这取决于我机器的可用内存吗?我可以在内存中保留这样或更大的数组吗?感谢。
答案 0 :(得分:3)
这取决于我的机器的可用内存吗?
在某种程度上,是的。你不能拥有一个比你的记忆大得多的物体。的然而强>
我可以在内存中保留这样或更大的数组吗?
32位进程最大可以是2GB(特殊情况下为3GB)。但即使在使用64位进程的64位系统上,you cannot exceed the size of 2 GB for a single .NET object也是如此。因此,您可以拥有两个1.5 GB的大型阵列,但不能只有一个3 GB的阵列。而你的似乎远远超过这个规模。
正如评论者所指出的,there is a way around this limit以及更高版本的.NET:
将它放在App.config文件中:
<configuration>
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
</configuration>