macOS の仮想メモリ統計を表示するコマンド。Linux の vmstat とは別物で、カーネル(XNU)の Mach レイヤーが管理するページの状態をそのまま覗ける。
使い方
vm_stat— OS 起動からの累積値vm_stat 1— 1 秒ごとの差分(1 行目のみ累積値)
核心: free の少なさはメモリ不足のサインではない
macOS は空きメモリを「もったいない」とみなし、キャッシュなどに使い切る設計。逼迫かどうかは Compressions / Pageouts / Swapouts が増え続けているかで判断する。
主な項目
今の状態(スナップショット)
| 項目 | 意味 |
|---|---|
| free | 未使用 |
| active | 最近使われている |
| inactive | しばらく未使用。回収候補(再アクセスで active に戻る) |
| purgeable | アプリが「捨ててよい」と宣言したキャッシュ |
累積カウンタ(起動からの回数)
- Pages reactivated: inactive → active に戻った回数。多いと RAM 不足の兆候
- Pageins / Pageouts: ディスクからのページ読み込み / 書き出し
- Compressions / Decompressions: メモリ圧縮 / 展開
- Swapins / Swapouts: 圧縮済みページのディスク復帰 / 退避
逼迫時の動きは 2 段構え
- 圧縮: まず未使用の anonymous ページを圧縮して RAM 内に保持(ディスクより桁違いに速い)
- スワップ: それでも足りないときだけ、圧縮済みページをディスクへ書き出す
つまり macOS の swap 対象は「圧縮済みページ」。Swapouts が増え続けるのは、圧縮でも吸収できない本物のメモリ不足。
圧縮率は stored in compressor ÷ occupied by compressor で計算できる。
実運用(SRE 視点)
vm_stat 1の差分で Pageouts / Swapouts / Compressions の伸びを見る- Activity Monitor の「メモリプレッシャー」の裏側がこの仕組み。
memory_pressureコマンドでも確認できる