禁用非必要插件后必须彻底退出vscode并重开工作区才能释放内存,因扩展宿主进程不会随禁用自动销毁;同时需在项目根目录.vscode/settings.json中正确配置files.watcherexclude排除node_modules等目录,并设置extensions.experimental.affinity隔离高耗插件进程。

禁用非必要插件后必须彻底重启
禁用插件不等于立即释放内存——VS Code 的扩展宿主进程不会随禁用操作自动销毁。常见错误是点完 Disable 就 Reload Window,旧进程仍在后台运行,内存照常占用。
- 全局禁用:右键插件 →
Disable (Global),所有工作区都不加载 - 仅当前项目禁用:用命令面板运行
Extensions: Disable Extension in This Workspace,状态栏会显示Workspace - 禁用后必须完全退出 VS Code:macOS 上按
Cmd+Q,Windows/Linux 关闭所有窗口并确认code进程已消失(可用任务管理器或ps aux | grep code验证) - 重新打开工作区时,务必用
code .或双击文件夹,而不是从 Dock 或快捷方式启动残留实例
files.watcherExclude 配置写错就白忙活
这是最常被抄错却无人察觉的配置项。VS Code 默认递归监听整个工作区,node_modules 里几万个文件会快速耗尽系统 inotify 句柄,导致内存持续爬升、CPU 尖峰、甚至触发内核级警告。
- 必须写在项目根目录的
.vscode/settings.json中,不是用户 settings.json - 值必须为
true,不能写成"true"字符串 - 路径模式要用双星号
**/,写成*/node_modules/*或漏掉末尾/**都无法匹配子目录 - 推荐最小集:
"**/node_modules/**"、"**/dist/**"、"**/build/**"、"**/.git/**",pnp或pnpm项目额外加"**/.pnpm/**" - Linux 用户需检查
cat /proc/sys/fs/inotify/max_user_watches,低于524288时执行echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches
extensions.experimental.affinity 控制插件进程归属
某些重量级插件(如 ms-python.python、dbaeumer.vscode-eslint)默认和 UI 主进程共用内存空间,一旦出问题会直接拖垮编辑器响应。用 affinity 把它们挪到独立扩展主机进程,能隔离崩溃、降低主线程压力。
- 在
.vscode/settings.json中添加:"extensions.experimental.affinity": { "ms-python.python": 2 } - 数字含义:
1= 与渲染器同进程(默认),2= 独立扩展主机进程,0= 禁用该插件(慎用) - 只对已启用插件生效;若插件被禁用或未安装,该配置会被忽略
- 搭配
Developer: Show Running Extensions观察“Process ID”列变化,确认是否已分离进程
别信“轻量插件”宣传,看它是否 onStartup 激活
很多插件标榜“轻量”,但只要声明了 onStartup 激活事件,就会在 VS Code 启动瞬间抢占主线程 CPU,哪怕你从不打开对应语言文件。这类插件往往比显性功能插件更伤性能。
- 打开命令面板,运行
Developer: Show Running Extensions - 重点关注 “Startup Time” > 150ms 且状态为
Running(不是Activated)的插件 - 典型高耗插件:
esbenp.prettier-vscode、ms-vscode.js-debug、gitlens、formulahendry.code-runner - 禁用前先查插件文档,确认其激活事件(activationEvents)字段是否含
"*"或"onStartup";这类插件几乎无法懒加载,只能关
files.watcherExclude、以及你以为关掉了其实还在跑的扩展进程。每一步操作都得验证效果,否则优化只是心理安慰。











