私はC#の最大オブジェクトサイズが2GBであることを知りました。また、特定のPCごとにメモリ制限があり、32ビットまたは64ビットのいずれかです。OutOfMemoryExceptionが再びスローされない限り処理する方法は?
私のアプリケーションでは、可能な限り大きな整数の配列が必要です。だから私が必要とするのは、最大の可能な配列が作られるまでOutOFMemoryException
の世話をすることです!
私は以下のコードで終わる:
private int[] AllIntegers()
{
int[] all;
int divider = 2;
try
{
all = new int[int.MaxValue];
}
catch (OutOfMemoryException)
{
all = new int[int.MaxValue/divider];
}
//Probably will fail again. how to efficently loop the catch again
for (int i = 0; i < all.Length; i++)
{
all[i] = i;
}
return all;
}
コードも失敗します、私は配列刚性ループの適切な方法を行うことができているを探しています!
あなたのシナリオは何ですか?なぜこれが必要ですか?あなたは本当にそのような大きな構造を記憶しておく必要がありますか?動的に成長するリストを使用してみませんか? –
これを成功させても、それを使用することはできません。アレイでOSが許可しているすべてのメモリをいっぱいにすると、それ以上の変数を割り当てる空きメモリはありません。 – Svarog
@ダーリン私は限界を表現しています。現時点では特別なシナリオはありません。あなたが意味するのは 'List'ですか?それには限界がありますか? –