npm run崩溃需给Node子进程加--max-old-space-size参数,而非VSCode主进程;VSCode卡死应使用--max-memory=4096等Electron参数;扩展主机崩溃需禁用高耗插件并严格配置watcherExclude;远程开发需在remoteServerEnv中设置VSCODE_NODE_OPTIONS。

直接在终端里跑 npm run 崩溃报 JavaScript heap out of memory,不是 VSCode 本身的问题,而是你启动的 Node 子进程堆内存超限了——得给那个具体进程加 --max-old-space-size,不是给 VSCode 主界面加。
npm run 崩溃时怎么加内存参数
错误发生在终端执行 npm run dev 或 npm run build 时,本质是 vue-cli-service、vite、ts-node 这类 CLI 工具拉起的独立 Node 进程溢出。VSCode 内置终端只是个壳,不参与内存管理。
- 优先改
package.json的 script 字段,例如把"build": "vite build"改成"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 vue-cli-service serve" - 临时调试可用
export NODE_OPTIONS=--max-old-space-size=4096(macOS/Linux)或set NODE_OPTIONS=--max-old-space-size=4096(Windows CMD),但别全局设,否则会影响本地 mock server 等其他 Node 进程 - 值不建议超过
4096:真到这个量级还没好,大概率是构建配置漏排除node_modules、或 TypeScript 全量检查没关,不是内存不够
VSCode 主进程卡死或白屏怎么办
打开 VSCode 就卡住、窗口空白、弹“内存不足”,这是 Electron 主渲染进程 RSS 内存飙到 3GB+,和 Node 脚本完全无关。桌面图标双击启动绕不开默认参数,--max-old-space-size 对它无效。
- 必须在终端执行:
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对 GUI 启动的 VSCode 没用,那是给子进程用的
Extension Host 崩溃提示“扩展主机已关闭”
保存文件后弹窗说扩展主机挂了,或者 Developer: Show Running Extensions 里看到某个插件内存持续 >120MB 不回落,说明 Extension Host 进程自己 OOM 退出——它不认 --max-old-space-size,得靠隔离和监听控制。
- 禁用高耗插件后,必须完全关闭 VSCode 窗口(
Developer: Reload Window不行),否则旧进程还在吃内存 - 在项目根目录的
.vscode/settings.json中严格配files.watcherExclude:"**/node_modules/**": true(少一个/就失效),顺手加上"**/dist/**"、"**/.git/**"、"**/*.log" - 启用
extensions.experimental.affinity隔离扩展进程:"extensions.experimental.affinity": { "*": 1 },避免一个插件泄漏拖垮全部 - 别信
increase-memory-limit这类包——它只是帮你往package.json里写参数,还可能覆盖你手动配的值
远程开发(SSH)时远端 tsserver 崩溃
通过 Remote-SSH 连上去,tsserver 或 searchService 在远端被 OOM killer 杀掉,是因为它们作为独立 Node 进程,默认没内存上限。本地调参对远端完全无效。
- 在用户或工作区
settings.json中添加:"remote.SSH.remoteServerEnv": { "VSCODE_NODE_OPTIONS": "--max-old-space-size=2048" } - 值从
2048起步,含大量.d.ts可试3072,超过4096很少必要 - 改完必须完全关闭当前远程窗口(不只是重连),再重新
Connect才生效 - 同步加固
files.watcherExclude和search.exclude,否则光调内存也扛不住递归扫描node_modules
真正难处理的从来不是参数数字本身,而是搞不清哪个进程在吃内存——主进程、Extension Host、Node 子进程、远端 tsserver,四者互不干扰,得各管各的。开 Developer: Open Process Explorer 看真实 RSS,比猜强十倍。


















