問題は、.net での配列の割り当てに関するものです。以下に、取得できる配列の最大長が長さになるサンプル プログラムがあります。長さを +1 に増やすと、outofMemory 例外が発生します。しかし、長さを維持してコメントを削除すると、2 つの異なる大きな配列を割り当てることができます。両方の配列は、2 GB の .net 許容オブジェクト サイズよりも小さく、合計メモリも仮想メモリよりも小さくなっています。誰かが何か考えを入れることができますか?
class Program
{
static int length = 203423225;
static double[] d = new double[length];
//static int[] i = new int[15000000];
static void Main(string[] args)
{
Console.WriteLine((sizeof(double)*(double)length)/(1024*1024));
Console.WriteLine(d.Length);
//Console.WriteLine(i.Length);
Console.WriteLine(Process.GetCurrentProcess().VirtualMemorySize64.ToString());
}
}