vscode主进程非node.js进程,不能用--max-old-space-size;需分层处理:npm run build崩溃应改package.json脚本加node --max-old-space-size=4096;远程tsserver需配remote.ssh.remoteserverenv注入vscode_node_options;主进程卡死须终端执行code --max-memory=4096 --disable-extensions。

不能直接给 VSCode 主进程加 --max-old-space-size,它根本不是 Node.js 进程;真正要调的,是你在终端里跑的构建脚本、远程 tsserver、或者 Extension Host —— 但每个场景的参数、位置、生效条件全都不一样。
npm run build 崩溃报 JavaScript heap out of memory 怎么修
这是最常被误判为“VSCode 内存问题”的真实场景:错误发生在你内置终端启动的独立 Node.js 子进程里,和 VSCode 界面完全无关。
- 优先改
package.json的 script 字段,例如把"build": "vite build"改成"build": "node --max-old-space-size=4096 ./node_modules/vite/bin/vite.js build" - Windows 下若用
vue-cli-service等 CLI 工具,必须用cross-env注入环境变量:"dev": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vue-cli-service serve" - 别全局设
NODE_OPTIONS(比如export NODE_OPTIONS=...)——它会影响你本地起的所有 Node 进程,包括 mock server、本地 API,容易引发冲突 - 值不建议超过
4096:超过后极少真正解决问题,反而会掩盖插件泄漏或files.watcherExclude没配对这类根本问题
Remote-SSH 远端 tsserver/searchService 卡死或被 OOM 杀掉
远端的语言服务、搜索索引都在服务器上以 Node 进程运行,默认无内存限制,大型项目极易撑爆内存。
诊断并恢复通过 SSH 隧道连接的 OpenClaw 节点。用于解决配对必需错误、隧道冲突、远程端点错误以及 SSH 目标配置错误等问题。
- 必须通过
remote.SSH.remoteServerEnv注入环境变量,在用户或工作区settings.json中添加:
"remote.SSH.remoteServerEnv": {
"VSCODE_NODE_OPTIONS": "--max-old-space-size=2048"
}
-
2048是较稳妥起点;含大量.d.ts或嵌套极深依赖时可试3072;超过4096很少必要 - 修改后必须完全关闭当前远程窗口(不只是 Reload Window),再重新 Connect 才生效
- 同步加固
search.exclude和files.watcherExclude,否则光调内存也扛不住递归扫描node_modules
VSCode 主进程卡死、白屏、启动即崩
这不是 Node 脚本堆溢出,而是 Electron 渲染进程本身 RSS 内存飙高(常超 3GB),--max-old-space-size 对它完全无效。
- 绝对不要用桌面图标、Dock 或 Finder 双击启动 —— 它绕不开默认参数;必须终端执行:
code --disable-extensions --disable-gpu --max-memory=4096 . -
--max-memory=4096是 Electron 12+ 支持的参数,单位 MB,只作用于主进程;--disable-extensions能跳过 GitLens、ESLint 等预热,省掉 500MB+ 内存 -
--disable-gpu在 macOS 外接显示器或 Intel 核显下可减少 200–500MB 渲染内存驻留 - Windows 用户注意:
set NODE_OPTIONS=--max-old-space-size=4096对 GUI 启动无效,那是给 Node 子进程用的
Extension Host 长期 RSS > 1.6GB 怎么定位和压降
Extension Host 是典型的“渐进式内存滞留”重灾区,尤其在 TypeScript 项目中,未清理的监听器或 TreeDataProvider 会导致 V8 堆长期高于 1.4GB 且 GC 频率下降。
- 按
Ctrl+Shift+P→ 执行Developer: Show Running Extensions,重点关注Activation Events含onStartup或*的扩展(如ms-python.python、dbaeumer.vscode-eslint) - 看
Memory列:RSS > 300MB 就该怀疑;长期 > 500MB 基本可确认是元凶;禁用后必须完全关闭窗口再重开,否则旧进程仍驻留 - 在项目根目录
.vscode/settings.json中强制排除监听:"files.watcherExclude": { "**/node_modules/**": true, "**/dist/**": true }—— 这是防止内存爬升的底线配置,不是“可选优化” - 禁用远端
searchService(设search.useRipgrep为false)能直接砍掉 1.5GB+ 内存,代价是Ctrl+Shift+F响应变慢
真正难的不是加参数,而是分清哪个进程在吃内存、为什么吃、以及加了之后是否掩盖了更底层的问题——比如没配 files.watcherExclude 却狂拉 --max-old-space-size,等于给漏水的船拼命加水泵。










