崩溃时需按进程分层处理:node子进程加--max-old-space-size,vscode主进程用--max-memory,远程开发配remote.ssh.remoteserverenv,extension host调affinity和内存阈值。

npm run 崩溃时怎么加 --max-old-space-size
你在 VSCode 内置终端执行 npm run build 或 npm run serve 报 JavaScript heap out of memory,这不是 VSCode 主程序的问题,而是 CLI 工具(如 vite、vue-cli-service、webpack)启动的独立 Node 进程堆内存超限。
- 优先改
package.json的 script 字段,例如把"build": "vite build"改成"build": "node --max-old-space-size=4096 ./node_modules/vite/bin/vite.js build" - Windows 下若用
vue-cli-service等需兼容 shell 变量,必须用cross-env:"serve": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vue-cli-service serve" - 别全局设
NODE_OPTIONS:它会污染所有本地 Node 进程(比如你同时跑的 mock server),导致意外行为 -
--max-old-space-size=4096是较稳妥上限;盲目拉到8192很少真正解决问题,反而掩盖了构建配置缺陷或未排除node_modules的问题
VSCode 主进程卡死/白屏,--max-old-space-size 无效
桌面图标双击打开 VSCode 后卡顿、弹窗“内存不足”或直接白屏,说明 Electron 主渲染进程 RSS 内存飙高(常达 3GB+),而 --max-old-space-size 对它完全不起作用——这是 Electron 自身的内存管理逻辑,不是 V8 堆问题。
- 必须终端启动:
code --disable-extensions --disable-gpu --max-memory=4096 .,其中--max-memory=4096是 Electron 12+ 参数,单位 MB,只管主进程 -
--disable-extensions不是可选:GitLens、ESLint 等插件预热阶段就能占掉 500MB+,不关它们,调再大也白搭 -
--disable-gpu在 Intel 核显或 macOS 外接显示器场景下,能省 200–500MB 渲染内存 - Windows 快捷方式也可加参数:右键属性 → “目标”末尾加空格 +
--max-memory=4096,但路径含空格时整个值要用英文引号包裹
远程开发(SSH)连接后远端 tsserver 卡死
VSCode 远程开发时,tsserver、searchService、watcher 都在远程服务器上以 Node 进程运行,本地加任何启动参数都无效。你看到 htop 里一堆 Node 进程吃光内存,就得在远端注入环境变量。
- 在 VSCode 设置中搜
remote.SSH.remoteServerEnv,点“在 settings.json 中编辑”,添加:
"remote.SSH.remoteServerEnv": {
"VSCODE_NODE_OPTIONS": "--max-old-space-size=2048"
}
2048 是较稳妥起点;项目含大量 .d.ts 或深度嵌套依赖可试 3072;超过 4096 极少必要search.exclude 和 files.watcherExclude,否则光调内存也扛不住递归扫描 node_modules
Extension Host 自己爆内存,禁用插件也不行
你已禁用所有插件,但保存一个 10MB JSON 文件仍报 JavaScript heap out of memory,大概率是 Extension Host 进程自身泄漏——它和主进程、Node 子进程完全隔离,且默认无内存上限。
- 打开命令面板(Ctrl+Shift+P),运行
Developer: Toggle Developer Tools,在 Console 输入process.memoryUsage()查看当前堆使用量 - 在工作区
.vscode/settings.json中加:"extensions.experimental.affinity": { "*": 1 },强制所有扩展跑在独立子进程中,避免单个泄漏拖垮全部 - 重点关掉 ESLint/Prettier 对大文件的监听:配
"eslint.validate": ["javascript", "typescript"],显式排除.log、.jsonl等后缀 - 本地大文件处理还需调
files.maxMemoryForLargeFilesMB(默认 50)和editor.maxTokenizationLineLength(默认 20000),否则 minified JSON 或日志拼接行会静默降级
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











