指南/Claude Code使用太多記憶體
Mac上的Claude Code使用太多記憶體或CPU?如何找出來並拿回資源
簡短回答
Claude Code在終端機中以名為claude的程序執行,工作時還會啟動其他程序:MCP伺服器、子代理程式,以及用來檢查成果的開發伺服器和測試。有兩件事會讓它變重。執行了好幾個小時的工作階段,記憶體和CPU用量可能越來越高;結束後用claude --resume繼續,就能恢復正常。另外,它啟動的程序在工作階段結束後可能仍在執行。在活動監視器中搜尋claude、node和mcp就能找到它們。Vitals是一款Mac系統監控工具,會列出在每個專案檔案夾中運作的所有程序,工作階段留下了什麼一目了然。
如何找出Claude Code用了什麼
- 01 打開活動監視器,按一下「記憶體」,在搜尋欄位中輸入claude。每個執行中的工作階段是一列。用了好幾GB,或你沒要它做事卻在忙的那一列,就是該重新啟動的。
- 02 選擇「顯示方式」→「所有程序(依階層排列)」。打開終端機App旁邊的三角形,就能看到每個工作階段,以及它底下由它啟動的所有東西。
- 03 重新啟動很重的工作階段:按兩次Control-C結束它,然後在同一個檔案夾中執行
claude --resume並選擇那段對話。它會從停下的地方繼續。 - 04 清除搜尋欄位,先搜尋mcp,再搜尋node。關閉所有Claude Code工作階段後仍然存在的列,就是被留下來的。
- 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從不會自行結束任何東西。
大家常問的問題
為什麼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和連接埠,並指出閒置中仍在執行的開發伺服器。
詞彙表中的相關條目
更多指南
- Mac為什麼這麼慢
- 是什麼在消耗Mac的電池
- 哪個App在使用我的CPU或記憶體
- Mac為什麼無法睡眠
- Chrome占用太多記憶體
- 為什麼Mac的風扇這麼吵
- 如何控制Mac的風扇轉速
- 如何釋放Mac的RAM
- Docker使用太多記憶體
- 如何停止Docker容器
- Mac音量混音器
- Cursor使用大量CPU
- Claude Code和Codex的用量上限
- Claude App佔用大量CPU
- Codex佔用大量CPU
- Ollama佔用過多記憶體
- 活動監視器替代方案
- iStat Menus替代方案
- Stats替代方案
- Mac版工作管理員
- 最佳Mac系統監控工具
- 最佳Mac選單列監控工具
- 最佳Mac音量混音器
- Mac上的htop
- Mac版Process Explorer
- 最好的Mac溫度監控工具