C#

时间:2017-04-05 13:01:15

标签: c#

查看this,看来Single是C#中内存要求最低的非整数。如果我创建:

Single[,] data = new Single[100000000, 10];

我得到了:

System.OutOfMemoryException

这取决于我机器的可用内存吗?我可以在内存中保留这样或更大的数组吗?感谢。

1 个答案:

答案 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>