ASP.NET アプリケーションがあります。
以下は、System.OutOfMemoryException をスローします。
byte[] test = new byte[268435456];
これを呼び出した時点で、現在のメモリ使用量は 158MB です。
System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess();
long value = proc.PrivateMemorySize64;
ローカルでは、32 ビットの Windows 7 を実行しており、実稼働環境では Windows Server 2008R2、64 ビットです。両方のボックスに 4GB のメモリがあります。私のボックスは Windows タスク マネージャーあたり約 5 GB ですが、実稼働ボックスは 3 GB 未満です。いずれにせよ、両方のボックスに利用可能なメモリがあります(ページファイルの鉱山)。長さが 256MB (268435456 バイト) のバイト配列を作成する場合、256MB を超えるオーバーヘッドがありますか? ASP.NET に継承の制限はありますか?
編集: 2008R2 ボックスのアプリケーション プールの「プライベート メモリ制限」は 0 (制限なし) に設定されています。