3

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 (制限なし) に設定されています。

4

1 に答える 1

0

.netが大きなヒープから十分な連続メモリを割り当てることができないため、メモリ不足の例外が発生します。システムに4GBのメモリがある場合でも、ユーザースペースは最大2GBです。

これは、4GBのメモリを搭載したWindows764ビットバージョンのWindowsで正常に機能します。

于 2012-11-30T13:11:12.947 に答える