Claude Code のメモリ使用量が高い原因と対処法|RAM 肥大を防ぐ

Claude Code のメモリ使用量が高い原因と対処法|RAM 肥大を防ぐ

Claude Code を長く使っていると「PC のファンが回りっぱなしになる」「動作が急に重くなった」「ついにはフリーズして再起動するしかなかった」という場面に出くわすことがあります。本記事では、Claude Code がメモリを大量に消費する仕組みと、Anthropic 公式のトラブルシューティング手順に沿った対処を、すぐ試せる順番で整理します。

結論

Claude Code のメモリ肥大は、大規模コードベースとコンテキストの蓄積が主因です。/compact でコンテキストを縮小し、タスクの区切りで再起動、--safe-mode/heapdump で原因を切り分ければ、RAM 消費を抑え暴走を防げるとわかります。

目次 (9)

なぜ Claude Code はメモリを大量に消費するのか

Claude Code は多くの開発環境で動作するよう設計されていますが、大規模なコードベースを処理する際にリソースを大きく消費することがあると Anthropic 公式が明記しています。主な要因は次の通りです。

  • 会話・ツール出力が積み上がり、コンテキストウィンドウが肥大化する
  • 巨大なビルドディレクトリやログまでファイル探索の対象に含まれる
  • プラグイン・MCP サーバー・hook など追加機能が常駐リソースを増やす

特に問題になりやすいのが、長時間のセッションでコンテキストが膨らみ続けるケースです。後述する GitHub の報告では、わずか 30 分でメモリが急増した例も挙がっています。

まず試す 5 つの基本対処

公式トラブルシューティングが「パフォーマンス問題が出たら」として挙げる対処は、次の順で試すのが効率的です。

  1. /compact を定期的に実行してコンテキストサイズを縮小する
  2. 大きなタスクの区切りで Claude Code をいったん終了し、再起動する
  3. 巨大なビルドディレクトリを .gitignore に追加し、探索対象から外す
  4. claude --safe-mode で再起動し、プラグイン・MCP・hook が原因かを切り分ける
  5. それでも改善しなければ /heapdump でメモリの内訳を取得する

再起動しても会話は失われません。同じディレクトリで claude --resume を実行すれば、セッションをそのまま再開できます。

/compact と /clear でコンテキストを抑える

メモリ肥大の最大の温床はコンテキストの蓄積です。/compact は会話履歴を要約して圧縮し、コンテキスト消費を下げます。すでに不要になった文脈なら /clear でまるごと破棄するほうが確実です。

巨大ファイルを読み込んだ直後にコンテキストが何度も上限まで再充填されると、Autocompact is thrashing というエラーが出て自動圧縮が停止します。これは無駄な処理ループを避けるための仕様です。次の手順で回復します。

  1. ファイルを全体ではなく、行範囲や関数単位など小さなチャンクで読ませる
  2. /compact keep only the plan and the diff のように、残す内容を絞って圧縮する
  3. 大きなファイルの作業を別のコンテキストへ逃がす
  4. 過去のやり取りが不要なら /clear でリセットする

/heapdump でメモリの内訳を診断する

基本対処でも RAM が高止まりする場合は、/heapdump を実行します。JavaScript のヒープスナップショットとメモリ内訳が ~/Desktop(Desktop フォルダのない Linux ではホームディレクトリ)に書き出されます。

内訳には resident set size(実メモリ)・JS ヒープ・array buffers・native の不明領域 が表示され、増加が JavaScript オブジェクト側か、ネイティブコード側かを判別できます。.heapsnapshot ファイルは Chrome DevTools の Memory → Load から開いて、何がメモリを保持し続けているか(retainer)を追跡できます。

不具合として報告する場合は、この 2 つのファイルを添えて GitHub に投稿すると調査が進みやすくなります。

--safe-mode で原因(プラグイン・MCP・hook)を切り分ける

メモリ増加の原因が本体なのか、追加した機能なのかを切り分けるには claude --safe-mode が有効です。これはそのセッションのすべてのカスタマイズを無効化します。safe-mode で起動してメモリ消費が下がれば、犯人はプラグイン・MCP サーバー・hook のいずれかです。

その後はクリーンな構成と比較しながら、どの拡張が原因かを一つずつ特定していきます。/doctor を実行すれば、インストール状態・設定・MCP 構成・コンテキスト使用量を一度に点検できます。claude が起動すらしない場合は、シェルから claude doctor を実行します。

129GB 暴走報告と Linux 環境での注意点

GitHub の Issue #11315 では、仮想メモリが 129GB(物理 RAM の 8 倍)まで膨張し、システムが完全にフリーズしてハードリセットを余儀なくされた事例が報告されています。環境は Claude Code v2.0.36 / Ubuntu 24.04.3 LTS / RAM 16GB で、物理メモリ消費が約 2GB から 30 分で約 12GB まで増加したとされています。

報告者は明確な再現手順がないまま複数回発生したと述べており、原因として「キャッシュの無制限な増加」「解放されないリソースや循環参照」「会話履歴の蓄積」などが疑われています。当面の自衛策として、次のような手動監視で危険水準に達したら再起動する運用が紹介されています。

watch -n 1 'ps aux --sort=-%mem | head -5'

大量の RAM を積んでいない環境、とりわけ Linux で長時間セッションを回す場合は、こうした監視を併用すると安全です。

フリーズ・ハング時の復旧手順

Claude Code が無反応になったときは、慌てて電源を切る前に次を試します。

  1. Ctrl+C で現在の処理のキャンセルを試みる
  2. それでも反応しなければ、ターミナルを閉じて再起動する

ターミナルを閉じても会話は保持されます。同じディレクトリで claude --resume を実行すれば、中断したセッションを拾い直せます。データを失う心配なく、思い切って再起動できると覚えておくと安心です。

メモリ肥大を日常的に防ぐ運用のコツ

最後に、トラブルを未然に防ぐための日常運用をまとめます。

  • 1 つのタスクが終わったら /clear か再起動で区切りをつけ、コンテキストを持ち越さない
  • 長い作業では /compact をこまめに実行し、履歴を要約して圧縮する
  • node_modules やビルド成果物など巨大ディレクトリは .gitignore に入れて探索対象から外す
  • プラグインや MCP サーバーは必要なものだけに絞り、不要な常駐を減らす
  • RAM の少ない環境では、メモリ使用量を監視して早めに再起動する

これらを習慣にしておけば、Claude Code を快適に使い続けながら、RAM 肥大やフリーズのリスクを大きく下げられます。


出典

参考になったら ♡
Clauder Navi 編集部
@clauder_navi

Anthropic の Claude / Claude Code を中心に、日本のエンジニア向けに最新動向と実務 を毎日発信。運営方針 は メディアについて をご覧ください。