?>

macOS 27でアプリケーション用メモリ不足:原因と解決策

いつもどおり作業しているとMacの動きが止まり、システムのアプリケーション用メモリが不足したので使っていないアプリを終了するよう促すウインドウが表示されます。続いて、一時停止中のアプリが並んだ「強制終了」の一覧が出ます。混乱するのは、これが16GBや32GBのメモリを積んだMacでも、空き容量が十分にあるドライブでも起こることです。元になった手順はMacHabitsによるものです。

このメッセージは、実際にはRAMの量そのものの話ではありません。Golden Gateでは、特定のMacで以前より表示されやすくなっている可能性もあります。以下では、何が引き金になるのか、原因をどう素早く見つけるのかを説明します。始める前に、アプリの互換性を確認し、オペレーティングシステムを変更する前に復元可能なバックアップを用意してください。

この警告が実際に意味すること

Apple SiliconのMacは、CPUとGPUで1つのユニファイドメモリのプールを共有します。アプリがプールの容量を超えて必要とすると、macOSは使われていないメモリを圧縮し、その一部を起動ディスク上のスワップファイルに移します。この組み合わせにより、Macは物理メモリから想像されるより多くの処理を普通にこなせます。アクティビティモニタの「使用済みメモリ」が、何の問題もなくても高いことが多いのはこのためです。

警告は、この仕組みが追いつかなくなったときに表示されます。そうなる経路は2つあります。

原因1:スワップ用の空き容量が足りない

スワップは起動ディスク上にあります。空き容量が減るとmacOSはスワップファイルを追加で作れなくなり、メモリの逃げ場がなくなります。Appleコミュニティの長年のエキスパートは、空き容量が少ないと、ディスクが技術的にいっぱいになるずっと前に警告が出ることがあると助言しています。特に、アプリが大量の仮想メモリを要求しているときに起こりやすいとのことです。

原因2:大量の仮想メモリを要求するプロセス

空き容量が十分にある人を混乱させるのがこちらです。アプリがmacOSにメモリのアドレス空間を要求すると、カーネルはそれを管理するためにページテーブルを作り、このページテーブルはスワップに退避できないメモリ上に置かれます。プロセスにリークがあり、アドレス空間を解放せずに要求し続けると、テーブルは大きくなり続け、ほかの用途に使える実メモリが残らなくなります。すると、ドライブに空きがあっても警告が表示されます。

実際には、2つ目の原因はたいてい1つのアプリです。リークのあるタブを抱えたブラウザ、Electronアプリ、コンテナランタイム、仮想マシン、不具合のあるバックグラウンドエージェントなどです。

今すぐ対処する

警告が画面に出ている間は、次のようにします。

  1. 「強制終了」の一覧を見る。 異常な量のメモリを使っているアプリは、使用量とともに表示されます。いちばん大きい数字が最初の容疑者です。
  2. 手放せる中でもっとも重いアプリを終了する。 応答するなら先に作業を保存します。ブラウザや仮想マシンが定番の候補です。
  3. メモリプレッシャーを見守る。 アクティビティモニタの「メモリ」タブで確認します。グラフが緑に戻れば、当面の危機は去っています。再起動は不要です。

本当の原因を見つける

Macが反応するようになったら、警告の引き金を5分かけて突き止めてください。そうしないと、また起こります。

メモリで並べ替える。 アクティビティモニタで「メモリ」タブをクリックし、表示 > すべてのプロセスを選んで、「メモリ」列で並べ替えます。上位5つを控えます。

増え続けていないか見る。 10分後にもう一度見ます。使っていないのに増え続けるプロセスは、リークの有力な候補です。

ターミナルで正確な値を取得する:

top -o mem -l 1 -n 10 -stats pid,command,mem

次に、怪しいプロセスをプロセスIDで詳しく調べます。

footprint -p 1234
vmmap --summary 1234 | tail -20

1234をPIDに置き換えてください。footprintは、そのプロセスが実際に占有しているメモリ量を示します。vmmap --summaryは、予約している仮想アドレス空間の量を示します。フットプリントは小さいのに仮想サイズが非常に大きいプロセスは、まさに原因2のパターンです。

スワップとストレージを確認する:

sysctl vm.swapusage
ls -lh /System/Volumes/VM
df -h /System/Volumes/Data

スワップファイルが大きく、しかも増えていて、空き容量も少ないなら、原因1です。空き容量が十分あるのに警告が出るなら、原因2です。

よくある原因と対処

タブを大量に開いたブラウザ。 Chromiumベースのブラウザは、タブや拡張機能ごとに別のプロセスを動かします。1つの不具合のあるタブが際限なく増えることがあります。ブラウザ自身のタスクマネージャで見つけ、拡張機能も見直してください。

Electronアプリとウェブ技術ベースのアプリ。 ウェブ技術で作られたチャット、コラボレーション、AIのデスクトップアプリは、独自のブラウザエンジンを内蔵しています。いくつも同時に動かすとメモリの大部分を占めることがあり、長時間のセッションでリークするものもあります。修正されるまでは、毎日終了して開き直すのが現実的な回避策です。

コンテナと仮想マシンのアプリ。 Docker Desktopなどの仮想化ツールは、仮想マシン用にメモリを確保します。設定を開き、割り当てを本当に必要な量まで減らしてください。

macOS 27にまだ対応していないアプリ。 Tahoeで問題なかったアプリでも、新しいOSリリースでリークすることがあります。アップデートを確認し、特定のアプリが繰り返し原因になっているなら、開発元に報告してください。

システムのプロセス。 上位にAppleのプロセスが来ている場合は、再起動し、アップグレード後のインデックス作成が終わるのを待ちます。それでも再発するなら、フィードバックアシスタントでsysdiagnoseを添えて報告してください。

Golden Gateで256GBのMacが特に影響を受けやすい理由

ここで原因1とアップグレードが重なります。

256GBのドライブを搭載したMacでは、Golden Gateの占有分が積み重なります。新しいシステム、多くのユーザーがAppleの公表する7GBを大きく上回ると見ているApple Intelligenceのモデル、アップグレード後に一時的に膨らむシステムデータ、そしてTime Machineのローカルスナップショットです。これらが使うギガバイトの分だけ、スワップが使えるギガバイトが減ります。

これを直接測定したわけではありませんが、理屈は単純です。Tahoeで空き30GBのまま快適に動いていたMacが、まったく同じアプリを動かしても、Golden Gateで空きが12GBになれば警告に当たる可能性があります。容量の小さいドライブで警告が出たら、まず空き容量を確認してください。

ドライブの少なくとも15〜20%は空けておく。 256GBのMacなら、およそ40〜50GBです。安全にそこまで空ける方法は、ストレージのガイドで説明しています。

予防のために

  • 空き容量を健全に保つ。 特に大型アップグレードのあとは注意します。
  • ときどき再起動する。 長時間動かし続けると、ゆっくりしたリークがたまります。
  • ログイン時に起動するものを減らす。 システム設定 > 一般 > ログイン項目と機能拡張で設定します。
  • 見るのは「使用済みメモリ」ではなくメモリプレッシャー。 ときどき黄色になるのは正常です。頻繁に赤になるなら、作業負荷がメモリを超えているか、何かがリークしています。
  • 繰り返す原因は報告する。 開発者が具体的な報告を受け取れば、リークは修正されます。

これらの手順の元の版は、macOS 27のアプリケーション用メモリ不足の警告に関するMacHabitsのガイドで確認できます。

要点

  • この警告は、メモリとスワップが追いつかないという意味であり、RAMが少ないとは限りません。
  • 原因1:スワップ用の空き容量不足。原因2:大量の仮想メモリを予約しているプロセス。
  • 「強制終了」の一覧でいちばん大きいアプリを終了し、アクティビティモニタ、footprint、vmmapで本当の原因を探します。
  • Golden Gateを使う256GBのMacでは、まず空き容量を確認します。

この警告についてさらに: MacHabitsによる「macOS 27でアプリケーション用メモリ不足」の解説。

出典: https://machabits.info/articles/run-out-of-application-memory-macos-27

?>
?>