WindowsとLinuxのメモリ
本ページではWindowsとLinuxについてのプロセスメモリの見方について記載します。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をそれぞれ表示できるようになっています。
タスクマネージャ |
パフォーマンスモニタ |
Linuxのメモリの見方
Linuxでプロセス単位でメモリを確認するにはtopコマンドか、psコマンドで確認する方法が簡単です。top
VIRT・・・仮想アドレス空間に割り当てられた領域RES・・・物理メモリに割り当てられた領域
SHR・・・他のプロセスからも共有されている可能性がある領域
Tasks: 115 total, 1 running, 114 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2041652k total, 1975180k used, 66472k free, 283688k buffers Swap: 2031608k total, 34644k used, 1996964k free, 1481516k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3091 tomcat 20 0 284m 44m 14m S 0.3 2.2 10:09.82 java 1 root 20 0 2040 648 556 S 0.0 0.0 0:10.66 init 2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
ps aux
VSZ・・・仮想アドレス空間に割り当てられた領域RSS・・・物理メモリに割り当てられた領域
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2040 648 ? Ss Mar19 0:10 init [3]