直接用Developer: Open Process Explorer可精准查看各插件真实RSS内存和CPU占用,展开extensionHost节点排序后能快速定位高内存插件(如Prettier占620MB、GitLens占480MB),需区分瞬时峰值与空闲驻留,禁用后必须重启Extension Host才能释放内存。

直接用 Developer: Open Process Explorer 能看到真实 RSS 内存和 CPU 占用,比任何第三方插件或系统任务管理器都准——它显示的是 Extension Host 下每个插件对应子进程的实时资源消耗,不是估算值。
用 Developer: Open Process Explorer 看真实内存和 CPU
这个面板打开的是 VSCode 自己的进程树,能展开 extensionHost 节点,逐行列出每个已加载插件的当前 Memory(MB)和 CPU %:
- 点击
Memory列标题可降序排列,前 3 名基本就是真凶(比如esbenp.prettier-vscode占 620MB、eamodio.gitlens占 480MB) -
CPU %是动态值:保存文件后某插件突然跳到 60% 并持续数秒,说明它绑了onSave逻辑且处理卡顿 - 注意区分“瞬时峰值”和“空闲驻留”:关掉所有编辑器标签后,内存仍稳在 350MB+,大概率是监听器没
dispose()或缓存没clear() - 别信
Developer: Show Running Extensions的内存列——它只给估算值,对 GitLens、Prettier 这类挂全局 Map 的插件严重偏低,甚至显示N/A
用 code --status 定位后台子进程
当风扇狂转但界面不卡,问题一定在后台子进程里。终端运行 code --status,它会列出所有子进程的 PID、CPU% 和内存占用:
- 重点关注
Extension Host行:如果长期 CPU > 60%,基本锁定是某个插件在轮询或解析卡死 - 记下高占用进程的 PID,再用
ps -p [PID] -o comm=(macOS/Linux)或任务管理器右键 → “打开文件位置”,确认命令名是否为node /path/to/pylance或gitlens.gitlens - 如果看到多个
Extension Host实例同时高占,可能是开了多窗口,或用了 Remote-SSH/WSL,需分别查 PID -
code --status不依赖 UI,即使编辑器卡死也能在终端跑出结果
禁用后内存不降?关键在进程是否真退出
右键点 Disable 只是标记状态,旧 Extension Host 进程仍驻留内存,RSS 值纹丝不动:
- 禁用插件后,必须执行
Developer: Restart Extension Host(命令面板搜),否则什么都没变 - 更彻底的做法:完全关闭当前窗口(macOS 要点菜单栏 → Quit;Windows/Linux 要清空托盘),再用
code --disable-extensions /path/to/project重开验证 - 某些插件(如 Copilot、Remote-SSH)会注册全局监听器,禁用后仍可能残留子进程,需手动
ps aux | grep -i "copilot\|remote"+kill -9 [PID] - 语言服务器类插件(Pylance、TSServer、pyright)一旦启动,不会随文件关闭而退出,必须关窗口才释放
files.watcherExclude 配置写错等于没配
这是最常被忽略、也最立竿见影的优化项。VSCode 默认用 chokidar 监听整个工作区,遇到 node_modules(几万小文件)、.git/objects 就触发 inotify 事件风暴,Node.js 子进程满载:
- 必须写进项目根目录的
.vscode/settings.json,全局设置不生效 - 通配符必须是
"**/node_modules/**": true,写成*node_modules*、/node_modules/或node_modules全无效 - 生效前提:关闭当前工作区,再重新打开;仅保存
settings.json不触发重载 - 推荐完整配置:
"**/node_modules/**"、"**/dist/**"、"**/build/**"、"**/.git/**"、"**/*.log"
真正难的不是找到哪个插件吃资源,而是确认它是否真的退场了——很多问题插件会在禁用后继续驻留子进程,尤其语言服务器和远程开发类扩展,得靠 code --status 或 ps 才能看见它们还活着。











