先看任务管理器:windows查多个code.exe,macos查electron实例数是否>1;仅进程数>1才需合并,单窗口多标签属标签管理问题;window: merge all windows仅对同源启动窗口生效,dock/开始菜单点击易失效,应改用code --new-window命令启动。

怎么判断该不该合并窗口
先看任务管理器:Windows 按 Ctrl+Shift+Esc,找多个 Code.exe 进程;macOS 打开活动监视器,搜 Electron,看实例数是否大于 1。只有进程数 >1,才真需要“合并”——单个窗口里开了 20 个标签页,不是窗口问题,是标签管理或分组问题,强行合并没意义。
Window: Merge All Windows 命令为什么无效
这个命令只对“同源启动”的窗口生效,常见失效场景:
- 从 Dock 或开始菜单反复点击图标新开的窗口,常被系统视为新会话 → 改用终端执行
code --new-window /path/to/project启动 - 双击
package.json等文件直接打开的窗口,属于临时工作区,Window: Merge All Windows对其不响应 - 某些插件(如旧版 GitLens、Project Manager)会劫持窗口创建逻辑 → 临时禁用插件后重试,再逐个排查
- 命令必须在你希望保留的“主窗口”中执行,且该窗口要有焦点
files.watcherExclude 是内存优化的底线配置
VSCode 默认为整个工作区递归注册 inotify 监听句柄,遇到 node_modules 这种几万小文件的目录,会持续分配内存且几乎不回收——这是最隐蔽、影响最大的内存爬升原因,和插件无关。
必须在项目根目录的 .vscode/settings.json 中配置,不能只写在全局设置里:
{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/**": true
}
}
Linux 用户还需检查:cat /proc/sys/fs/inotify/max_user_watches,若低于 524288,运行 echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches
禁用扩展后内存不降?因为没真正退出
VSCode 的扩展宿主进程不会随“重载窗口”(Developer: Reload Window)释放,必须完全退出:
- Windows/macOS:关闭所有窗口 → 右下角系统托盘/菜单栏图标也要退出(macOS 尤其注意,只关窗口不退出图标,进程仍在)
- 然后重新用
code .或双击.code-workspace启动 - 高耗扩展优先处理:
GitLens(关gitlens.codeLens.enabled)、ESLint(设"eslint.run": "onType")、Python(改用pylsp或清空python.analysis.extraPaths)
拖拽合并、工作区固化、监听排除、彻底退出——这四步缺一不可,少做一步,窗口看着合了,内存还在偷偷涨。











