Mac は「使用済みメモリ」ではなくメモリプレッシャーを見る
Activity Monitor を開き、メモリをクリックすると、多くの人が最初に見る数字は 使用済みメモリ です。ほぼ常に高い値になっています。48 GB の Mac では、ブラウザとエディタを開いただけで 40 GB に達することがあり、まるで解決すべき問題のように見えます。
実際にはほとんど問題ではありません。使っていないメモリは何の役にも立たないので、macOS は購入した RAM を使いきります。システムはファイルキャッシュで埋め、最近使ったページを常駐させます。Mac が本当にメモリ不足かどうかは、同じウインドウ下部の メモリプレッシャー グラフに現れます。「使用済みメモリ」が心配そうに見えても、グラフはたいてい緑のままです。
「使用済みメモリ」は無視して、メモリプレッシャーのグラフを見てください。緑なら、RAM メーターがほぼ満杯でも問題ではなく、直すものはありません。黄や赤なら、下の 3 つのカウンタが理由を教えてくれます。
「使用済みメモリ」だけでは判断できない理由
macOS は空いているメモリを活用しますが、Activity Monitor の項目は分けて読む必要があります。Apple のメモリガイドでは次のように定義されています。
| 項目 | 内容 | 心配すべきか |
|---|---|---|
| アプリメモリ | アプリが割り当てて使用中のページ | 一つのアプリだけ極端な場合 |
| 確保されているメモリ | カーネルがページアウトできない領域 | 直接できることはほぼない |
| 圧縮 | 空間確保のため圧縮され、RAM 内に残るページ | 少量は正常、急増が続けば信号 |
| キャッシュされたファイル | 空き RAM に保持されたファイルデータ | それ自体は問題ではない |
使用済みメモリはアプリメモリ、確保されているメモリ、圧縮メモリの合計です。キャッシュされたファイルは別に表示され、空いていた RAM を使い、必要になれば上書きできます。したがって、正常な Mac でも使用済みメモリとキャッシュの両方が大きいことがあります。
代わりにプレッシャーを見る
メモリプレッシャーのグラフは、パフォーマンスを損なわずに割り当てを満たせるかどうかを、macOS 自身がまとめたものです。
- 緑。 空きメモリまたは回収可能なメモリから要求が満たされています。「使用済みメモリ」がどれだけ高くても、やることはありません。
- 黄。 システムは圧縮と追い出しで追いつこうとしています。まだ動いてはいますが、余裕はなく、大きな新規割り当てには代償が伴います。
- 赤。 割り当ては、先に解放しなければならないメモリを待っています。ビーチボールやアプリ切り替えの遅さはここから来ます。
コマンドラインからも確認できます。
memory_pressure
見るべきは最後の行です。
System-wide memory free percentage: 74%
同じコマンドは、その値の元になる生のカウンタも出力します。ページ数やスワップの動きが含まれ、色ではなく証拠が欲しいときに役立ちます。
色の背後にある 3 つのシグナル
プレッシャーが黄または赤のとき、3 つの数字が理由を説明します。どれか 1 つだけだと誤解しやすいので、まとめて見てください。
スワップ使用領域。 ディスクに退避したメモリページです。現在も RAM に収まりきらないとは限りません。
sysctl vm.swapusage
vm.swapusage: total = 6144.00M used = 4568.19M free = 1575.81M (encrypted)
スワップがゼロでないこと自体は失敗ではありません。メモリに余裕があるときでも、macOS は長い間触れていないページをスワップアウトします。SSD ならそのコストは小さく済みます。作業中にスワップが大きく、かつ 増え続けていることこそが本当のシグナルです。
圧縮の動き。 ディスクへスワップする前に、macOS は RAM 上のページを圧縮します。
vm_stat | grep -i compress
Pages stored in compressor: 1945157.
Pages occupied by compressor: 389440.
Decompressions: 82848340.
Compressions: 163587315.
Mac を使っている最中に Compressions が急増しているなら、システムは空きを確保しようと奮闘しています。何週間も起動したままのマシンで、履歴の合計が大きいだけでは、それ自体は何も意味しません。
負荷時のページイン。 ディスクからページを読み戻すことが、体感としての停滞になります。圧縮、スワップ、ページインが同時に起きている Mac は、典型的なビーチボール状態です。
原因になっているアプリを見つける
Activity Monitor のメモリタブをメモリ列で並べ替え、リスト全体ではなく上位の数行を見てください。答えはたいてい次の 4 つのどれかです。
- タブの多いブラウザ。 レンダラはそれぞれ別プロセスなので、ブラウザの合計は複数行に分散します。Chrome 自身のタスクマネージャはウインドウメニューにあり、タブや拡張機能ごとにメモリを割り当てて表示します。Chrome Helper の CPU とメモリが高いとき を参照してください。
- 仮想マシンまたはコンテナランタイム。 これらはメモリをあらかじめ確保するので、数字はリークではなく設定の選択です。
- 長時間動かしているクリエイティブアプリや開発アプリ。 セッションを通じて着実に増え、下がらないメモリは、開発者に報告する価値があります。
- 見慣れないプロセス。 終了する前に特定してください。見慣れないプロセスの調べ方 を参照してください。
アプリを終了してください。システムが対応できているときに、単に大きいだけのプロセスを強制終了しても、未保存の作業を失うだけで得るものはありません。
役に立たないこと
- メモリクリーナーアプリ。 メモリを空けることは、システムが意図して作ったキャッシュを捨てることです。RAM メーターはよく見えますが、すべてを読み戻しているあいだ Mac は遅くなります。
- 定期的な
sudo purge。 ベンチマーク用にファイルキャッシュを捨てるコマンドで、同じ間違いのコマンド版です。名前は似ていても、ディスクのパージ可能な領域とは無関係です。パージ可能な領域 を参照してください。 - すぐ開き直すアプリを閉じること。 どのアイドルアプリを圧縮するかは、決まった手順より macOS の判断のほうが上手です。
- スワップを無効にすること。 スワップは安全弁です。外すと、代わりにアプリが強制終了されます。
本当に RAM を増やすのが答えのとき
Apple Silicon は購入後に増設できないユニファイドメモリを使うので、当てずっぽうではなく診断する価値があります。
普段の作業中にプレッシャーが黄や赤のまま、セッションを通じてスワップが増え続け、上位の消費者がすべて同時に開いておく必要があるものなら、メモリを増やしてください。プレッシャーが緑で、「使用済みメモリ」に反応していただけなら、RAM を増やしても体感できる変化はありません。
モニタの位置づけ
Mole のステータス画面とメニューバーでは、メモリプレッシャー、CPU、温度、プロセスを並べて、遅くなった時点の数値を確認できます。これらの画面は監視専用で、メモリを解放しません。最適化は別の操作で、その中のメモリ解放はシステムが警告または深刻なプレッシャーを報告した場合に限って実行され、正常ならスキップされます。
よくある質問
Mac でメモリ使用量が高いのは悪いことですか?
必ずしも問題ではありません。プレッシャーが緑なら、通常は現在の作業に必要なメモリが足りています。ただし「キャッシュされたファイル」は「使用済みメモリ」と別に集計されるため、高い使用量をすべてキャッシュのせいとは説明できません。プレッシャーと実際の動作を合わせて判断します。
スワップはどれくらいあると多すぎますか?
マシンをまたいで通用するしきい値はありません。絶対値ではなく、実際の作業中の推移を見てください。プレッシャーが黄や赤のままスワップが増え続けるのが問題で、何週間も起動したままのマシンで数 GB あるくらいなら、たいてい問題ではありません。
メモリクリーナーアプリは効きますか?
宣伝どおりに動くこと自体が問題です。キャッシュを捨てると空きメモリの数字は上がり、その後数分間は遅くなります。何かが必要になったとき、macOS はすでにメモリを回収しています。
プレッシャーが緑なのに Mac が遅いのはなぜですか?
その場合、制約はメモリではありません。CPU、熱によるスロットリング、ディスクを見てください。Mac が遅い理由 から始めると、ボトルネックを順に洗い出せます。