2009-06-14 18 views
2

私のプログラムには7,667,712バイトのコミット済みヒープがありますが、33,546,240個の予約済みヒープバイトがあります。このプログラムでは約44 MBのプライベートバイトが使用されています。 .NET GCに管理されたヒープのために必要なスペースを少なくするにはどうすればよいですか?.NET Committedブロックと予約済みヒープサイズ

答えて

3

最も簡単な答えはできません。 .Net GCは自己調整型であり、メモリを熱心に予約しますが、必要になるまでメモリをコミットしません。メモリが不要になったときに再び予約済みに変更されます。

GC マシンに大きなメモリがあるときは、メモリが未確定のメモリです。

デフォルトでは(プロセスが32ビットで、ワークステーションGCモードを実行している場合)、16 MBの小さなオブジェクトヒープ用に予約されたデフォルトセグメントがあるため、33 M​​Bはそれほど大きくありません。

6

プロセスがメモリを予約しているというだけで、そのメモリを使用しているとは限りません。

Windowsでは、予約済みメモリとは、プロセスがページをにマップしたことを意味し、そのアドレス空間はです。物理メモリは、予約されたページをコミットすることによって割り当てられます。もちろん、コミット済みのページをページファイルにスワップアウトして、基本となる物理メモリを一時的に解放するため、そのメモリを必ずしも使用する必要はありません。

要するに、これは(一般的に)気にする必要はありません。あなたが解決しようとしている問題は何ですか?

+1

私はコミットとリザーブの意味を知っています。問題は、ユーザーがしばしば.NETアプリケーションのメモリ使用量が高いことに不満を持ち、何とかこれを隠したいということです。 – wj32

+0

メモリの使用量が多い場合や仮想アドレス空間を使用している場合は、予約されていない物理メモリの使用量を気にする必要があります。 このプロセスでは、パフォーマンスにゼロの影響を与える1 GBのメモリを予約することができます。 – mfawzymkh

関連する問題