指南/Claude Code使用太多記憶體

Mac上的Claude Code使用太多記憶體或CPU?如何找出來並拿回資源

Atta 🐬

Vitals創辦人

發佈於

簡短回答

Claude Code在終端機中以名為claude的程序執行,工作時還會啟動其他程序:MCP伺服器、子代理程式,以及用來檢查成果的開發伺服器和測試。有兩件事會讓它變重。執行了好幾個小時的工作階段,記憶體和CPU用量可能越來越高;結束後用claude --resume繼續,就能恢復正常。另外,它啟動的程序在工作階段結束後可能仍在執行。在活動監視器中搜尋claude、node和mcp就能找到它們。Vitals是一款Mac系統監控工具,會列出在每個專案檔案夾中運作的所有程序,工作階段留下了什麼一目了然。

如何找出Claude Code用了什麼

  1. 01 打開活動監視器,按一下「記憶體」,在搜尋欄位中輸入claude。每個執行中的工作階段是一列。用了好幾GB,或你沒要它做事卻在忙的那一列,就是該重新啟動的。
  2. 02 選擇「顯示方式」→「所有程序(依階層排列)」。打開終端機App旁邊的三角形,就能看到每個工作階段,以及它底下由它啟動的所有東西。
  3. 03 重新啟動很重的工作階段:按兩次Control-C結束它,然後在同一個檔案夾中執行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裡也沒有它:它的用量會算在你的終端機App底下,或算在你用來執行它的那個編輯器終端機底下。它也是一個會啟動其他程式的程式。每個MCP伺服器是一個程序,每個子代理程式是一個程序,而它執行你的測試或啟動你的開發伺服器時,那些也都是程序。大家怪罪Claude Code的記憶體用量,大多其實在它啟動的東西裡。下表幫你分清楚哪個是哪個。

Claude Code的記憶體和CPU用在哪裡

你看到的這是什麼怎麼做
claude使用好幾GB 開了好幾個小時的工作階段 結束它,再執行claude --resume
claude閒置時也在忙 同上:工作階段開久了會變慢 重新啟動工作階段;更新Claude Code
很多個node程序 MCP伺服器,每個工作階段中每個伺服器各一個 用/mcp移除沒在使用的伺服器
所有工作階段都關閉後仍留著的程序 沒有停止的MCP伺服器、子代理程式或無介面瀏覽器 依父程序為1找出它們,然後結束
next-server、測試執行器或建置作業的CPU使用率很高 Claude Code為了檢查成果而啟動的東西 停止它,或請Claude Code停止

工作階段開久了會變大

工作階段會保留整段對話、讀過的每個檔案,以及每個指令的輸出。幾個小時下來就會累積;在Claude Code的問題追蹤頁上,有人回報工作階段長到好幾GB,或在閒置時讓一個CPU核心一直忙。這些回報的解決方法都一樣:結束工作階段,再繼續它。對話會隨時儲存,所以claude --resume不會遺失任何內容,並從一個乾淨的程序重新開始。

讓Claude Code保持最新,比大多數工具更重要。它更新得很頻繁,而記憶體問題正是各版本之間會修正的項目之一。claude update可以更新它。

工作階段留下了什麼

工作階段結束時,它啟動的程序照理說應該跟著結束,但並非總是如此。MCP伺服器、子代理程式或無介面瀏覽器可能失去父程序後繼續執行,佔著記憶體卻沒有任何東西在使用它。有位開發者寫文章提到,工作一天後,他數出37個這樣的程序,佔用超過6 GB。

只要去看,它們很容易認出來:沒有終端機、父程序為1,啟動時間是好幾個小時前。結束它們是安全的。嚴格來說,殭屍程序是另一回事:它已經結束,不使用記憶體。大家在這裡說的殭屍,其實是孤兒程序,仍然活著,也仍佔著記憶體。

開發伺服器、測試和建置

為了檢查成果,Claude Code會啟動你的開發伺服器、執行你的測試,或建置專案。它在背景啟動的開發伺服器,在工作完成後仍會繼續提供服務;如果沒有任何東西停止它,工作階段關閉後也一樣。兩三個專案各有一個被遺忘的開發伺服器,是記憶體充足的Mac也會不夠用的常見原因。

結束工作階段前,請Claude Code停止它啟動的東西,或查看有哪些連接埠正在被監聽:在你沒使用的連接埠上執行的伺服器,就是沒人在用的伺服器。

同時開好幾個工作階段

平行執行代理程式(每個工作或每個分支一個),會讓上面的一切成倍增加:每個工作階段都有自己的記憶體、自己的一份MCP伺服器,以及自己的開發伺服器。在16 GB的Mac上,這就是游刃有餘與記憶體壓力變黃之間的差別。關閉已經完成的工作階段,並給伺服器不同的連接埠,免得第二個默默失敗又不斷重試。

Vitals多了什麼

Vitals會顯示每個專案的用量,包括不屬於任何視窗的程序。

  • 「專案」標籤頁:在專案檔案夾中運作的所有程序,不論是哪個終端機或編輯器啟動的,並顯示整個專案的記憶體、CPU和能源用量
  • 每個專案正在監聽的連接埠。閒置中仍在執行的開發伺服器會被指出,並讓你停止它們
  • 即使Claude Code自行更新,仍算作同一個工具,所以它一整天的記憶體是一條線
  • 某個App的記憶體不斷變大,或連續幾分鐘佔用CPU時,會傳送通知
  • 可從選單列結束任何App,結束前會先詢問

小提醒

  • Vitals會顯示程序及其用量。它不會讀取Claude Code的對話,也不知道工作階段正在做什麼。
  • Vitals從不會自行結束任何東西。
購買Vitals $15 一年更新$9,或在首發期間以$15終身使用,之後為$39。一次付清,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工作階段。工作階段下次執行時,會重新啟動它需要的伺服器。

Claude Code需要多少記憶體?

新開的工作階段會用幾百MB。其餘取決於它啟動了什麼:MCP伺服器、開發伺服器、一次測試。平行執行好幾個工作階段,全部都會成倍增加。

有沒有App能顯示Claude Code在Mac上執行了什麼?

Vitals有「專案」標籤頁,會列出在每個專案檔案夾中運作的所有程序,附上記憶體、CPU和連接埠,並指出閒置中仍在執行的開發伺服器。

詞彙表中的相關條目

更多指南