vs code插件卡顿排查需三步:先用developer: show running extensions查看启动耗时、cpu及内存占用;再以code --disable-extensions验证是否插件导致;最后用developer: open process explorer定位内存泄漏,并调优配置如eslint.run、gitlens缓存等。

Developer: Show Running Extensions 看谁在拖主线程
这是排查插件卡顿的第一步,不是“看看有哪些插件”,而是直接暴露它们对主线程的实际影响。按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入并运行 Developer: Show Running Extensions。
重点关注两列:
-
Startup Time:超过150ms的插件大概率在启动时就抢了主线程,比如某些主题、Copilot 或远程类扩展 -
CPU和Memory:持续占用 >200MB 或 CPU 波动频繁的插件(如eamodio.gitlens、dbaeumer.vscode-eslint、esbenp.prettier-vscode)往往是后台监听或分析逻辑没节制
注意:Activated 状态但耗时低的插件,可能只是注册了事件,还没真干活;而 Running 且 CPU 持续跳动的,才是正在后台跑任务。
code --disable-extensions 验证是否真由插件引起
这是最干净的验证方式——绕过所有用户扩展,只跑 VS Code 原生内核。关掉所有窗口,在终端执行:
code --disable-extensions
然后打开同一项目,做相同操作(比如连续输入、滚动、保存)。如果卡顿消失,基本锁定是插件问题;如果依旧卡,就得转向文件监视、语言服务或系统级配置排查。
--disable-extensions 不会影响已安装插件,也不改设置,只是临时屏蔽,比逐个禁用快得多也更可靠。
Developer: Open Process Explorer 定位高 RSS 插件
内存泄漏型卡顿往往不会立刻体现在 CPU 上,但会拖慢整个 Extension Host。运行 Developer: Open Process Explorer,展开 extensionHost 节点,看每个插件的 RSS(单位 MB)。
关键判断点:
- 格式化大 JSON 时
prettier-vscode飙到 500MB 属正常;但你关掉所有文件后它还稳在 350MB,大概率泄漏 - 禁用插件后 RSS 不降?必须执行
Developer: Restart Extension Host,否则旧进程还在跑 - 某些插件(如
github.copilot、ms-vscode-remote.remote-ssh)会注册全局监听器,即使禁用也可能残留子进程,需手动查ps aux | grep -i "copilot\|remote"并kill -9 [PID]
禁用后别急着卸载,先调轻它的默认行为
很多插件卡,不是因为功能本身重,而是默认行为太激进。不卸载、不换插件,就能让它们“变轻”:
-
gitlens.advanced.caching.enabled设为false,能省下 200–300MB 内存 -
eslint.run默认是onType,每敲一个字符就触发一次 AST 解析;改成onSave立刻缓解 -
typescript.preferences.includePackageJsonAutoImports设为"off",避免加载所有@types导致 TSServer 启动慢 -
prettier.requireConfig设为true,避免对无配置项目盲目格式化
这些设置写在 .vscode/settings.json(项目级)或用户 settings.json 中,改完需重启窗口才生效。
真正容易被忽略的是 files.watcherExclude ——哪怕你把所有插件都调得再轻,只要没配这个,node_modules 一多,inotify 句柄耗尽,插件照样集体卡死。它不是可选项,是必选项。











