VSCode卡顿90%由插件引起,应先执行code --disable-extensions验证,再用Developer: Show Running Extensions查Activation Time超500ms或Status异常的插件,结合Developer: Open Process Explorer看RSS持续占用,最后用Developer: Toggle Performance Impact定位打字卡顿源。

VSCode卡顿不用猜,90%能靠内置命令在2分钟内定位到具体扩展或配置项。别先卸插件、别急着重装——先看它自己报什么。
Developer: Show Running Extensions 看谁真在拖主线程
这是最接近“真相”的第一眼。按 Ctrl+Shift+P(macOS 用 Cmd+Shift+P),输入并运行 Developer: Show Running Extensions。
-
Startup Time > 500ms 的插件大概率在
activate()里做了同步 I/O,比如读整个node_modules或解析巨型 JSON 配置 -
Status 是
Activation failed或空白,说明它没加载成功却还挂着监听器,持续吃 CPU -
CPU 和 Memory 列不是看峰值,而是看“是否持续跳动”:比如
eamodio.gitlens在你没开 Git 相关文件时还每秒刷一次 blame 缓存,就属于典型后台轮询 - 注意
Activated≠Running:只注册了事件但没触发的插件不会出现在这里,所以这个列表只显示“正在干活”的嫌疑对象
Developer: Open Process Explorer 定位内存泄漏型卡顿
有些卡顿不体现在 CPU 上,而是内存越占越多,最终导致 Extension Host 崩溃或响应延迟。运行 Developer: Open Process Explorer,重点盯 extensionHost 下每个插件的 RSS(单位 MB)。
-
prettier-vscode格式化大 JSON 时飙到 500MB 属正常;但你关掉所有文件后 RSS 还稳在 350MB,基本就是泄漏 - 禁用插件后 RSS 不降?必须手动执行
Developer: Restart Extension Host,否则旧进程还在跑 - 某些插件(如
github.copilot、ms-vscode-remote.remote-ssh)会注册全局监听器,即使禁用也可能残留子进程,需终端查ps aux | grep -i "copilot\|remote"并kill -9 [PID]
Developer: Toggle Performance Impact 实时抓打字卡顿源
输入卡顿本质是主线程被同步阻塞,这个命令不画图、不录帧,但会在状态栏右侧亮起 ⚡ 图标,点开就能看到最近一次打字、保存或补全操作中谁拖慢了你。
- 典型提示如
Typing took 187ms — caused by extension 'esbenp.prettier-vscode',说明它在onDidChangeTextDocument里做了未await的文件读取或正则全量匹配 - 它只显示“已激活且正在运行”的扩展,
Not activated的插件不会上榜 - 如果同一扩展反复出现,基本可判定它没做异步化或节流,比如在
onType里直接fs.readFileSync读配置,或对整行文本跑/(^|\s)TODO(\s|$)/g这类无边界锚点的正则
code --disable-extensions 是最干净的验证起点
别一上来就手动禁用插件。关掉所有窗口,在终端执行:
code --disable-extensions
然后打开同一项目,重复卡顿操作(比如连续输入、滚动、保存)。结果只有两种:
- 卡顿消失 → 100% 是插件问题,接下来用
Developer: Start Extension Bisect二分定位(通常 3–4 轮出结果) - 依旧卡顿 → 问题出在
settings.json、工作区配置、语言服务本身,或 VSCode 自身更新损坏(可试code --clean)
这个命令不加载任何第三方扩展,但保留内置语言支持(如 TypeScript、JSON),所以基础编辑功能仍在,验证成本极低。











