Mac は「使用済みメモリ」ではなくメモリプレッシャーを見る
Activity Monitor を開き、メモリをクリックすると、多くの人が最初に見る数字は 使用済みメモリ です。ほぼ常に高い値になっています。48 GB の Mac では、ブラウザとエディタを開いただけで 40 GB に達することがあり、まるで解決すべき問題のように見えます。
実際にはほとんど問題ではありません。使っていないメモリは何の役にも立たないので、macOS は購入した RAM を使いきります。システムはファイルキャッシュで埋め、最近使ったページを常駐させます。Mac が本当にメモリ不足かどうかは、同じウインドウ下部の メモリプレッシャー グラフに現れます。「使用済みメモリ」が心配そうに見えても、グラフはたいてい緑のままです。
短い答え: 「使用済みメモリ」は無視して、メモリプレッシャーのグラフを見てください。緑なら、RAM メーターがほぼ満杯でも問題ではなく、直すものはありません。黄や赤なら、下の 3 つのカウンタが理由を教えてくれます。
「使用済みメモリ」が間違った数字である理由
macOS は空き RAM を無駄な RAM として扱います。最近読んだファイルを保持するページは常駐したままです。RAM から読み直すのはタダで、ディスクから読み直すのはタダではないからです。アプリがそのメモリを必要とした瞬間に、キャッシュは破棄されます。
内訳は Activity Monitor のメモリタブで確認できます。
| 項目 | 内容 | 心配すべきか |
|---|---|---|
| アプリケーションメモリ | アプリが割り当てて使っているページ | 1 つのアプリだけが突出している場合のみ |
| ワイヤードメモリ | カーネルがページアウトできないページ | 対応できることはほとんどありません |
| 圧縮 | 空きを作るために圧縮されたページで、まだ RAM 上にあります | 少しなら正常、多いとシグナルです |
| キャッシュされたファイル | RAM に空きがあったために保持されているファイルデータ | いいえ。システムが正常に動いている証拠です |
「使用済みメモリ」はこれらのいくつかを足し合わせたもので、何かが要求した瞬間に返されるキャッシュされたファイルも含まれます。だから健全な Mac でも容量近くまで上がり、そのまま留まります。
代わりにプレッシャーを見る
メモリプレッシャーのグラフは、パフォーマンスを損なわずに割り当てを満たせるかどうかを、macOS 自身がまとめたものです。
- 緑。 空きメモリまたは回収可能なメモリから要求が満たされています。「使用済みメモリ」がどれだけ高くても、やることはありません。
- 黄。 システムは圧縮と追い出しで追いつこうとしています。まだ動いてはいますが、余裕はなく、大きな新規割り当てには代償が伴います。
- 赤。 割り当ては、先に解放しなければならないメモリを待っています。ビーチボールやアプリ切り替えの遅さはここから来ます。
コマンドラインからも確認できます。
memory_pressure
注目すべきは最後の行です。
System-wide memory free percentage: 74%
同じコマンドは、その値の元になる生のカウンタも出力します。ページ数やスワップの動きが含まれ、色ではなく証拠が欲しいときに役立ちます。
色の背後にある 3 つのシグナル
プレッシャーが黄または赤のとき、3 つの数字が理由を説明します。どれか 1 つだけだと誤解しやすいので、まとめて見てください。
スワップ使用領域。 収まりきらずディスクに書き出されたメモリです。
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 の原因を 4 つのウインドウに散らさず、1 か所で特定できます。Mac の体感を予測する数字だからこそプレッシャーを見出しとして出し、代わりにメモリを空けようとはしません。
よくある質問
Mac でメモリ使用量が高いのは悪いことですか?
いいえ。使用量が高くてもプレッシャーが緑なら、macOS が空き RAM をキャッシュに使っているだけで、意図どおりの動作です。健全さの指標はプレッシャーであり、使用量ではありません。
スワップはどれくらいあると多すぎますか?
マシンをまたいで通用するしきい値はありません。絶対値ではなく、実際の作業中の推移を見てください。プレッシャーが黄や赤のままスワップが増え続けるのが問題で、何週間も起動したままのマシンで数 GB あるくらいなら、たいてい問題ではありません。
メモリクリーナーアプリは効きますか?
宣伝どおりに動くこと自体が問題です。キャッシュを捨てると空きメモリの数字は上がり、その後数分間は遅くなります。何かが必要になったとき、macOS はすでにメモリを回収しています。
プレッシャーが緑なのに Mac が遅いのはなぜですか?
その場合、制約はメモリではありません。CPU、熱によるスロットリング、ディスクを見てください。Mac が遅い理由 から始めると、ボトルネックを順に洗い出せます。