VSCode主进程OOM必须用--max-memory=4096(Electron 12+支持,单位MB),而非--max-old-space-size;后者仅作用于Node子进程。需终端执行code --disable-extensions --disable-gpu --max-memory=4096 .,桌面启动无效。

VSCode主进程OOM:必须用--max-memory而非--max-old-space-size
直接在终端里加--max-old-space-size=4096启动 VSCode 无效——它只对 Node 子进程起作用,而 VSCode 主进程是 Electron 应用,走的是 Chromium 的 V8 堆管理机制。--max-memory=4096才是正解,单位 MB,Electron 12+ 才支持。
常见错误现象:桌面图标双击或 Dock 启动后立刻崩溃,控制台看不到任何参数日志;code .不带参数也崩;process.memoryUsage()在开发者工具里显示 rss > 3GB。
- 必须终端执行:
code --disable-extensions --disable-gpu --max-memory=4096 . -
--disable-extensions跳过 GitLens、ESLint 等插件预热,省掉 500MB+ 内存 -
--disable-gpu在 macOS 外接显示器或 Intel 核显下可减少 200–500MB 渲染驻留 - Windows 用户别用
set NODE_OPTIONS=--max-old-space-size=4096,那对 GUI 启动的 VSCode 完全没用
Extension Host 内存卡死:查Developer: Open Process Explorer,不是Show Running Extensions
Developer: Show Running Extensions给的是估算值,不准;真正要盯的是物理内存 RSS。崩溃前看到“扩展主机已关闭”,大概率是 Extension Host 进程吃满内存后被系统杀掉,而不是插件本身写错了。
使用场景:打开一个含 10 万+ 文件的 monorepo,保存大 JSON 后编辑器卡顿、自动重启。
- 按
Ctrl+Shift+P→ 运行Developer: Open Process Explorer - 展开
extensionHost节点,按Memory列排序,找带项目路径的条目 - RSS 持续 > 300MB 的插件重点怀疑:
GitLens、esbenp.prettier-vscode、ms-python.python - 禁用插件后,必须完全关闭窗口(
Developer: Reload Window不行),否则旧 PID 还在吃内存
files.watcherExclude配错等于没配:规则必须带**/和/**
VSCode 默认用 chokidar 监听整个工作区,node_modules 里几万个文件,每个都注册 inotify 句柄——这些句柄几乎不回收,内存随文件数线性增长。漏配或写错格式,files.watcherExclude 就形同虚设。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
常见错误现象:“已排除 node_modules” 却仍 OOM;search.exclude 配了但内存照涨;多工作区下全局设置失效。
- 必须写在项目根目录
.vscode/settings.json,不能放用户级settings.json - 正确写法:
"**/node_modules/**": true✅;"node_modules/**"❌;"**/node_modules"❌ - Monorepo 必加:
"**/.turbo/**": true、"**/node_modules/.pnpm/**": true - Python 项目补:
"**/.venv/**": true、"**/venv/**": true
Node 子进程(如 npm run serve)OOM:单独设 NODE_OPTIONS
你在终端里执行 npm run serve 报 JavaScript heap out of memory,和 VSCode 主进程无关,是 CLI 工具启动的独立 Node 进程溢出了。这时候才轮到 --max-old-space-size 发挥作用。
使用场景:Vue/React 项目启动开发服务器时崩溃;TypeScript 全量类型检查卡死;Webpack 构建中途退出。
- Linux/macOS:在终端执行前临时设置:
NODE_OPTIONS="--max-old-space-size=4096" npm run serve - Windows CMD:
set NODE_OPTIONS=--max-old-space-size=4096 && npm run serve - PowerShell:
$env:NODE_OPTIONS="--max-old-space-size=4096"; npm run serve - 远程开发(SSH)需在远端配置:
"remote.SSH.remoteServerEnv": { "VSCODE_NODE_OPTIONS":"--max-old-space-size=2048" }
真正难处理的从来不是参数怎么写,而是你根本没意识到 VSCode 里有三个独立内存空间:主进程、Extension Host、Node 子进程——它们各自吃内存,也各自需要不同的调参方式。漏掉任意一层,OOM 就会换个姿势回来。

















