npm run崩溃时加--max-old-space-size是最常见误用场景,因错误地将该参数用于vscode主进程而非cli启动的node子进程,正确做法是在package.json的script中为vue-cli-service等工具添加node --max-old-space-size=4096前缀或windows下用cross-env注入node_options。

npm run 崩溃时加 --max-old-space-size 是最常见误用场景
你在终端里执行 npm run build 或 npm run dev 报 FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory,这不是 VSCode 主进程的问题,而是 CLI 工具(比如 vite、vue-cli-service、webpack)启动的独立 Node.js 子进程堆内存超限。
- 直接改
package.json的 script 字段,加node --max-old-space-size=4096前缀,例如:"build": "node --max-old-space-size=4096 ./node_modules/vite/bin/vite.js build" - Windows 下必须用
cross-env注入环境变量:"dev": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vite dev" -
NODE_OPTIONS不建议全局设(比如在系统环境变量里),它会影响所有 Node 进程,包括你本地起的 mock server 或其他脚本 - 值设到
4096通常是够的;拉到8192很少真有用,反而可能掩盖node_modules没排除、TS 类型检查范围过宽等根本问题
远程开发时远端 tsserver/searchService 内存爆掉
VSCode 远程开发(SSH)时,tsserver、searchService 都跑在服务器上,是独立的 Node.js 进程,默认没内存上限,大型项目一索引就 OOM 被杀,现象是「类型提示消失」「Ctrl+Click 失效」「突然断连」。
- 必须在本地 VSCode 的
settings.json中配置:"remote.SSH.remoteServerEnv": { "VSCODE_NODE_OPTIONS": "--max-old-space-size=2048" } -
2048是稳妥起点;若项目含大量.d.ts或 Lerna monorepo,可试3072;超过4096容易引发服务器整体 swap,得不偿失 - 改完必须完全关闭当前远程窗口(不只是 Reload Window),再重新 Connect —— 否则远端进程仍沿用旧参数
- 同步加固
search.exclude和files.watcherExclude,否则光调内存也扛不住递归扫描node_modules
Extension Host 占内存太多,不是调参能解决的
Extension Host 是 VSCode 里跑插件的 Node.js 进程,RSS 超过 500MB 就该怀疑了。它不继承 --max-old-space-size,盲目加参数基本无效。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 先按
Cmd+Shift+P/Ctrl+Shift+P执行Developer: Show Running Extensions,看 Memory 列,重点关注ms-python.python、dbaeumer.vscode-eslint、eamodio.gitlens这类启动即加载的插件 - 禁用后必须完全关闭窗口再重开,否则旧进程驻留,内存不释放
- 配合
files.watcherExclude排除大目录:"files.watcherExclude": { "**/node_modules/**": true, "**/dist/**": true } - 某些插件支持 affinity 配置,比如
"extensions.experimental.affinity": { "ms-python.python": 1 },能把它隔离到单独进程,但需插件本身支持
code --max-memory 只对主进程有效,别和 --max-old-space-size 混用
VSCode 主界面卡死、白屏、启动即崩,大概率是 Electron 渲染进程 RSS 内存飙高,和 Node.js 堆无关。桌面图标双击启动的 VSCode 完全不读 --max-old-space-size,那个参数对它无效。
- 必须终端启动:
code --max-memory=4096 --disable-extensions --disable-gpu . -
--max-memory=4096单位是 MB,只作用于主进程,Electron 12+ 才支持 -
--disable-extensions能跳过语言服务预热,省掉 500MB+;--disable-gpu在 macOS 外接显示器或 Intel 核显下可减 200–500MB 渲染内存 - Windows 快捷方式里加
--max-old-space-size=4096是无效的——那是给 Node 子进程用的,主进程根本不认
真正难调的不是数字,是搞清哪个进程在吃内存、为什么吃、以及它是否真的需要更多内存。参数只是兜底手段,node_modules 没排除、.gitignore 漏写、插件无脑监听整个工作区,这些才是根源。










