一个 Claude Code 会话占多少内存?
在小服务器上跑 Claude Code,内存是决定能放几个会话的那个数。这篇给的是实测值而不是估计,以及为什么常见的调优开关都不起作用。
RoamAI 团队发布于 2026年9月9日
数字
2026 年 8 月在 Claude Code 2.1.232 上测量,机器是一台 2 vCPU、922 MB 内存的 Linux VPS,并在一台 Apple Silicon Mac 上交叉验证。
- 刚启动、还没输入任何提示时:大约 290 MB RSS。连 claude --version 的峰值都有 288 MB,这是加载二进制本身的开销。
- 一个真实会话工作 44 分钟后:392 到 436 MB RSS。
- 其中 262 到 278 MB 是私有的匿名内存,128 到 155 MB 是二进制文件本身的内存页。
- 在同一台机器上再起一个会话,可用内存只减少了 116 MB,不是 400。二进制的文件页在进程之间是共享的。
为什么这么大
从 2.x 起,claude 命令是一个用 Bun 编译的单文件可执行程序,Linux 上约 323 MB,macOS 上约 307 MB。它不再是一个 node 进程加一个 JavaScript 文件,npm 包只负责下载这个可执行文件。常驻内存的大头是运行时和它加载的代码,不是你的对话。一个闲置几分钟的会话不会增长。
会话过程中真正增长的是 Bun 的原生分配器,不是 JavaScript 堆。在 Mac 上,一个跑了 10 分钟的会话原生堆有 269 MB,JavaScript 虚拟机只有大约 7 MB。
不起作用的开关
因为增长在原生堆里,JavaScriptCore 的那些环境变量都没有用。实测中 BUN_JSC_forceRAMSize 和 BUN_JSC_gcMaxHeapSize 只让用量变化了 0 到 8 MB,BUN_JSC_useJIT=false 直接让程序起不来。MIMALLOC_PURGE_DELAY=0 在 macOS 上看起来省了 20 MB,但那只是 macOS 统计可回收内存的方式,在 Linux 上没有任何变化。别把这些写进部署配置。
服务器怎么配
- 第一个会话:预留 400 MB。
- 同一台机器上每多一个会话:大约 120 MB。
- 1 GB 的 VPS 跑一个会话很宽裕,配好 swap 或 zram 能跑两三个。
- 不在用的会话不需要一直常驻。退出它,需要时用 claude --resume 唤醒,记录在磁盘上。恢复会话。
自己怎么测
在 Linux 上读 /proc/<pid>/status,看 RssAnon(私有内存,多个会话累加的是这个数)和 RssFile(共享的二进制页)。只看 RSS 会把共享页按进程重复计算,高估第一个之后每个会话的成本。
for pid in $(pgrep -x claude); do
echo "pid $pid"
grep -E 'RssAnon|RssFile' /proc/$pid/status
done在 RoamAI 里
文档里接入自己服务器那一页的配置要求就来自这些数字:按同时要跑的会话数,每个预留 1 GB 可用内存,其中第一个最贵。
不用自己维护服务器,会话也一直在
RoamAI 把 Claude Code 跑在托管机器或你接进来的服务器上,会话需要你时会通知你。注册免费,工作区 $9 / 月。
开始使用