web-dev-qa-db-ja.com

Windows CommitChargeがPhysical RAM使用量よりも低い?

私は この質問 を見ましたが、与えられた答えが私の質問に答えていないので、タイトルにもかかわらず、それは重複ではありません。

現在、システムコミットの使用量を物理メモリの使用量よりも少ないと報告するWindows XPシステムがあります。私の理解では、システムコミットはページファイルの合計量にRAMの使用量を加えたものでした。ウィキペディアで表現されているように:

RAMの現在の内容をすべて削除する必要がある場合に使用されるページファイルの量。

では、RAMの使用量をRAMandページファイルの使用量の合計よりも高いにすることはどのように可能でしょうか。

Process Explorer screenshot

4
user73728

コミットチャージの金額には、すべての物理メモリが含まれているわけではありません。ディスクにページングできるすべての物理メモリのみをカウントします。

From Windowsの限界を押し上げる-仮想メモリ (記事全体を読むことをお勧めします)

コミット保証の説明から予想されるように、コミット制限は物理メモリとページングファイルのサイズの合計です。実際には、オペレーティングシステムが物理メモリの一部を独自に使用するために予約しているため、すべての物理メモリがコミット制限にカウントされるわけではありません。

そして

プロセスが割り当てるすべての仮想メモリがコミット制限にカウントされるわけではありません。ご覧のとおり、予約済みの仮想メモリはそうではありません。ファイルマッピングビューと呼ばれるディスク上のファイルを表す仮想メモリも、アプリケーションがコピーオンライトセマンティクスを要求しない限り、制限にカウントされません。これは、Windowsがビューに関連付けられたデータを物理メモリから破棄してから破棄できるためです。ファイルから取得します。したがって、実行可能ファイルとシステムDLLイメージがマップされるTestlimitのアドレス空間内の仮想メモリは、コミット制限にカウントされません。コミット制限にカウントされるプロセス仮想メモリには2つのタイプがあります。 :プライベートおよびページファイルに裏打ちされています。

そのため、一部のOSメモリ使用量は、メモリマップファイルと同様にその制限にカウントされません。 Windowsでは、すべてのEXEファイルとDLLファイルはメモリマップファイルとしてロードされます。これらは物理メモリにロードされますが、ロード後に変更されないため(通常)、Windowsはページによってファイルをバックアップしません。ファイルは、ディスクファイルからそれらを再読み取りできることがわかっているためです。これが、コミット制限にカウントされない理由です。

6
shf301