ガイド/Claude Codeのメモリ使用量が多すぎる

MacでClaude Codeのメモリ・CPU使用量が多すぎる? 見つけ方と取り戻し方

Atta 🐬

Vitalsの創業者

公開日

結論

Claude Codeは、claudeという名前のプロセスとしてターミナルで動き、作業中にほかのプロセスを起動します。MCPサーバ、サブエージェント、そして作業の確認に使う開発サーバやテストの実行です。重くなる理由は2つあります。何時間も動いているセッションは、メモリとCPUの使用量が増えることがあります。終了してclaude --resumeで再開すれば元に戻ります。そして、起動したプロセスがセッションの終了後も動き続けることがあります。アクティビティモニタでclaude、node、mcpを検索して見つけましょう。Mac用システムモニタのVitalsなら、各プロジェクトフォルダで動いているすべてのプロセスを一覧にするので、セッションが残したものがひと目でわかります。

Claude Codeが何を使っているかを見つける方法

  1. 01 アクティビティモニタを開いて“メモリ”をクリックし、検索フィールドに“claude”と入力します。実行中のセッションがそれぞれ1行で表示されます。数ギガバイトを使っている行や、何も頼んでいないのに忙しい行が、再起動すべきセッションです。
  2. 02 “表示” → “すべてのプロセス(階層表示)”を選びます。ターミナルアプリの横の三角形を開くと、各セッションと、その下にセッションが起動したすべてのものが表示されます。
  3. 03 重いセッションを再起動します。Control-Cを2回押して終了し、同じフォルダでclaude --resumeを実行して会話を選びます。止めたところから続きます。
  4. 04 検索フィールドを空にして、“mcp”、次に“node”を検索します。Claude Codeのセッションをすべて閉じてもまだ残っている行は、残されたプロセスです。
  5. 05 ターミナルでは、ps -axo pid,ppid,rss,etime,command | grep -i mcpでそれらを親とともに一覧表示できます。親が1なら、そのプロセスを起動したセッションはもうありません。killのあとに番号を付けて停止します。

Claude Codeでは、/mcpで、セッションが起動するMCPサーバを一覧表示できます。それぞれが独立したプロセスです。使わないものは削除しましょう。

Claude Codeはコマンドラインプログラムなので、自分のウインドウもDockの項目もありません。その負荷は、ターミナルアプリか、ターミナルを使っているエディタの下に表示されます。また、ほかのプログラムを起動するプログラムでもあります。MCPサーバもサブエージェントもそれぞれ1つのプロセスで、テストを実行したり開発サーバを起動したりすれば、それもプロセスです。Claude Codeのせいだと思われているメモリのほとんどは、Claude Codeが起動したものが使っています。下の表で、どれがどれかを整理します。

Claude CodeのメモリとCPUの使い道

見えているもの概要すること
claudeが数GBを使っている 何時間も開いたままのセッション 終了してclaude --resumeを実行する
claudeがアイドル中も忙しい 同じ原因: 長いセッションは遅くなる セッションを再起動し、Claude Codeをアップデートする
多数のnodeプロセス MCPサーバ。セッションごと、サーバごとに1つ /mcpで使わないサーバを削除する
すべてのセッションを閉じたあとに残るプロセス 止まらなかったMCPサーバ、サブエージェント、ヘッドレスブラウザ 親が1のものを見つけて終了する
next-server、テストランナー、ビルドのCPU使用率が高い Claude Codeが作業の確認のために起動したもの 停止するか、Claude Codeに停止を頼む

長いセッションは大きくなる

セッションは、会話全体、読んだすべてのファイル、すべてのコマンドの出力を保持します。何時間も続くと積み重なり、Claude Codeのイシュートラッカーには、何ギガバイトにも達したセッションや、アイドル中もCPUコアを1つ使い続けたセッションの報告があります。どの報告でも対処法は同じで、セッションを終了して再開することです。会話は随時保存されるので、claude --resumeで何も失わずに、新しいプロセスから始められます。

Claude Codeを最新に保つことは、ほかの多くのツールより重要です。頻繁にリリースされ、メモリの問題もバージョンごとに修正されています。claude updateでアップデートできます。

セッションが残していくもの

セッションが終わると、起動したプロセスも一緒に終わるはずです。しかし、いつもそうなるとは限りません。MCPサーバ、サブエージェント、ヘッドレスブラウザが親を失ったまま動き続け、誰も使っていないのにメモリを抱え続けることがあります。これについて書いたある開発者は、1日の作業のあとに、そうしたプロセスが37個、合わせて6 GB以上を抱えているのを確認しました。

一度見れば簡単に見分けられます。ターミナルがなく、親が1で、開始時刻が何時間も前です。終了しても問題ありません。厳密には、ゾンビプロセスは別のものです。すでに終了していて、メモリを使いません。ここでゾンビと呼ばれているものは孤児プロセスで、生きていてメモリを抱えています。

開発サーバ、テスト、ビルド

作業を確認するために、Claude Codeは開発サーバを起動したり、テストを実行したり、プロジェクトをビルドしたりします。バックグラウンドで起動した開発サーバは、タスクが終わっても動き続け、何も止めなければセッションを閉じたあとも動き続けます。2つか3つのプロジェクトにそれぞれ忘れられた開発サーバがあるというのは、メモリに余裕があるはずのMacでメモリが足りなくなるよくある理由です。

セッションを終える前に、起動したものを停止するようClaude Codeに頼むか、どのポートが待ち受けられているかを確認します。使っていないポートのサーバは、誰も使っていないサーバです。

複数のセッションを同時に使うとき

タスクごとやブランチごとにエージェントを並行して動かすと、上のすべてが倍になります。セッションごとに、メモリ、すべてのMCPサーバのコピー、開発サーバがあります。16 GBのMacでは、余裕があるか、メモリプレッシャーが黄色になるかの分かれ目です。終わったセッションは閉じ、サーバには別々のポートを割り当てて、2つ目がひそかに失敗して再試行を繰り返さないようにしましょう。

Vitalsでできること

Vitalsは、どのウインドウにも属さないプロセスも含めて、各プロジェクトの負荷を表示します。

  • “プロジェクト”タブ: プロジェクトフォルダで動いているすべてのプロセスを、どのターミナルやエディタが起動したかにかかわらず、プロジェクト全体のメモリ、CPU、エネルギーとともに表示
  • 各プロジェクトが待ち受けているポート。アイドル状態で動いたままの開発サーバを知らせ、停止するかどうかを尋ねます
  • Claude Codeはアップデートをまたいで1つのツールとして集計されるので、1日のメモリの推移が1本の線になります
  • アプリのメモリ使用量が増え続けたときや、CPUを何分も使い続けたときに通知
  • メニューバーからどのアプリも“終了”可能。確認してから終了します

知っておくと便利なこと

  • Vitalsが表示するのは、プロセスとその使用量です。Claude Codeの会話を読んだり、セッションが何に取り組んでいるかを把握したりはしません。
  • Vitalsが勝手に何かを終了することはありません。
Vitalsを購入 $9 発売記念期間は$9、その後は$29。14日間の返金保証付き。

よくある質問

Claude Codeのメモリ使用量が多いのはなぜ?

何時間も開いたままのセッションは大きくなります。また、セッションが起動するMCPサーバ、サブエージェント、開発サーバは、それぞれ独立したプロセスです。セッションを終了してclaude --resumeを実行すれば、新しいプロセスで続けられます。

Claude Codeを再起動すると会話は失われる?

失われません。会話は随時保存されます。同じフォルダでclaude --resumeを実行し、続けたい会話を選びます。

Claude Codeを使うとnodeプロセスがたくさんあるのはなぜ?

ほとんどはMCPサーバです。各サーバは、セッションごとに独立したプロセスとして動きます。Claude Codeでは、/mcpでどのサーバが設定されているかがわかります。

Claude Codeが動かしたままにしたプロセスを見つけるには?

すべてのセッションを閉じてから、アクティビティモニタでmcpとnodeを検索します。ターミナルでは、ps -axo pid,ppid,rss,commandで各プロセスの親がわかります。親が1なら、残されたプロセスです。

残ったMCPサーバのプロセスを終了しても大丈夫?

はい。Claude Codeのセッションが1つも開いていなければ大丈夫です。セッションは、次に実行したときに必要なサーバをもう一度起動します。

Claude Codeにはどれくらいのメモリが必要?

新しいセッションが使うのは数百メガバイトです。残りは、MCPサーバ、開発サーバ、テストの実行など、何を起動するかで決まります。複数のセッションを並行して動かすと、そのすべてが倍になります。

MacでClaude Codeが何を動かしているかがわかるアプリはある?

Vitalsの“プロジェクト”タブは、各プロジェクトフォルダで動いているすべてのプロセスを、メモリ、CPU、ポートとともに一覧にし、アイドル状態のままの開発サーバを知らせます。

用語集

ほかのガイド