在 C# 中非整数的内存数组中可能最大

  • 本文关键字:数组 整数 内存 c#
  • 更新时间 :
  • 英文 :


看这个,似乎 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>  

最新更新