Mac のメモリ使用量をターミナルで調べる方法

Mac で現在のメモリ使用量を調べる方法について。

メモリ使用量は Mac にデフォルトで備わっている Activity Monitor から調べることもできますが、コマンドラインから調べたくなることがあります。 そんな場合には top コマンドを使用すれば OK です。

監視し続けたい場合

top コマンドをオプションなしで実行すると現在動いているプロセスのサマリーを 1 秒更新で表示し続けてくれます。 PhysMem と書かれたところがメモリの使用量を表します。

$ top
Processes: 233 total, 2 running, 6 stuck, 225 sleeping, 1149 threads                                                                20:31:01
Load Avg: 1.65, 1.66, 1.62  CPU usage: 7.78% user, 4.62% sys, 87.59% idle   SharedLibs: 70M resident, 12M data, 4892K linkedit.
MemRegions: 65399 total, 747M resident, 24M private, 318M shared. PhysMem: 4073M used (1375M wired), 20M unused.
VM: 662G vsize, 527M framework vsize, 72774545(0) swapins, 76102563(0) swapouts.   Networks: packets: 51908344/68G in, 25605302/2348M out.
Disks: 18975403/592G read, 8985658/491G written.

終了するには q を押します。

1 回限り取得したい場合

メモリ使用量を 1 回こっきり取得したいだけの場合は -l オプションや -s オプションをつけると OK です。

top -l 1 -s 0 | grep PhysMem

-l オプションと -s オプションについては man コマンドのヘルプには次のように説明されています。

-l <samples> Use logging mode and display <samples> samples, even if standard output is a terminal. 0 is treated as infinity. Rather than redisplaying, output is periodically printed in raw form. Note that the first sample displayed will have an invalid %CPU displayed for each process, as it is calculated using the delta between samples.

意訳: logging モードを使用し <samples> 個のサンプルを表示します。標準出力がターミナルになっている場合もそうなります。 0 は無限回と解釈されます。出力は再表示されるのではなく、未整形の形で周期的に表示されます。各プロセスの %CPU はサンプル間の差分を使って計算されるため、最初に表示されるサンプルが表示する %CPU は正しくありません。

-s <delay> Set the delay between updates to seconds. The default delay between updates is 1 second.

意訳: 更新間隔を <delay> 秒にセットします。デフォルト間隔は 1 秒です。

その他の方法として vm_stat コマンドを使う方法などもあるそうです。