为什么这个C#程序在具有24GB内存的64位计算机中会耗尽内存?

use*_*826 2 c# out-of-memory

这是我的代码:

public class Class1
{
    public int[][] binArray;
    public Class1()
    {
        binArray = new int[1000][];
        for (int i = 0; i < 1000; i++)
        {
            binArray[i] = new int[61608];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
class Program
{
    static void Main(string[] args)
    {
        Class1 c1 = new Class1();
        Class1 c2 = new Class1();
        Class1 c3 = new Class1();
        Class1 c4 = new Class1();
        Class1 c5 = new Class1();
        Class1 c6 = new Class1();
        Class1 c7 = new Class1();   // Memory will run out at about this point
        Class1 c8 = new Class1();
        Class1 c9 = new Class1();
        Class1 c0 = new Class1();
        Console.WriteLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

Class1用于存储数组,我认为它将为24GB的内存机器获得足够的61608*4字节的内存片段,为什么它out of memory exception在我初始化第7类时仍会抛出?

Bri*_*son 6

这几乎可以肯定是因为您将可执行文件构建为32b.即使在64b机器上运行超过~3GB的内存,它仍然会爆炸.编译为64b,你会没事的.