Windowsのプロセスメモリの見方


Windows OS上のプロセスが確保したメモリは用途やスコープに応じて以下のような種類に分けられています。

Virtual Bytes(バーチャルバイツ)

該当プロセスの仮想アドレス空間に割り当てられている領域の全合計をVirtual Bytesと呼びます。 Virtual Bytesはパフォーマンスモニタから process オブジェクトのカウンタとして確認することができます。 Virtual Bytesの値のみでは該当プロセスにおいて物理メモリがどの程度割り当てられているかは一切わかりません。 また、全プロセスのVirtual Bytesの合計値はOSとして認識している物理メモリとスワップ領域の合計値を超えることはできず、 32bit OS上ではデフォルトの設定では1プロセスあたりのVirtual Bytesは2GBを超えることはできません。超えようとした場合メモリが割り当てができずエラーが発生します。

Private Bytes(プライベートバイツ)

Virtual Bytesのうち、ほかのプロセスから共有されない領域をPrivate Bytesと呼びます。 Private Bytesはタスクマネージャで表示される「仮想メモリ サイズ」の値(~XP)や「コミット サイズ」の値(Vista~)、パフォーマンスモニタの process オブジェクトのカウンタとして確認することができます。 プログラムが利用するデータ等は主にこの中に含まれていますが、Virtual Bytesの中でもメモリマップされたファイル領域や、実行可能ファイル(.exe)とライブラリ(.dll、.lib)がロードされたイメージ領域の一部等は Private Bytes に含まれないためプログラムによってはPrivate BytesよりもWorking Setの値のほうが大きくなる場合もあります。

Working Set(ワーキングセット)

Virtual Bytesのうち、物理メモリに割り当てられている領域をWorking Setと呼びます。 Working SetはXPまでのタスクマネージャでは「メモリ使用量」として表示され、Vista以降では「Working set」として表示されます。 また、パフォーマンスモニタの process オブジェクトのカウンタとしても確認することができます。 なお、Working Setはその他プロセスから共有されないPrivate Working Setと共有可能なSharable Working Setの合計であり、 Windows Vista以降のタスクマネージャにおいてはWorking Set とPrivate Working Setをそれぞれ表示できるようになっています。

Working Set = Private Working Set + Sharable Working Set

Private Working Set

他プロセスから共有されないエリア

Sharable Working Set

その他プロセスと共有可能なエリア


ネタ元

インサイドWindows 第6版 上【電子書籍】[ Mark E. Russinovich ]