插件更新后大概率发生内存泄漏,尤其是gitlens、prettier、python等常驻服务型插件;需通过developer: show running extensions查实时内存(>120mb且不回落即可疑),关文件+等待150秒gc验证,禁用后须彻底重启vscode窗口而非仅重载,pid不变则需手动kill进程。

插件更新后出现内存泄漏,不是“可能”,而是大概率发生了——尤其是 GitLens、Prettier、Python 扩展这类常驻服务型插件,新版本若未同步完善 dispose() 或缓存清理逻辑,就会让 Extension Host 内存只涨不降。
看实时内存占用,别信“已启用”状态
更新后卡顿、关闭文件内存不回落?先别急着卸载。VSCode 的 Developer: Show Running Extensions 才是真实水位计:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入并运行该命令 - 列表里每个插件旁的数字是当前估算内存(MB),不是启动时分配量;持续 >120MB 且不随操作下降的,重点怀疑
-
N/A不代表安全,很可能是插件内部泄漏导致 V8 无法统计,直接禁用验证 - 更新后数值突增(比如 GitLens 从 85MB 跳到 210MB),基本可锁定为该次更新引入的问题
确认是否真泄漏:关文件 + 等待 GC,再看内存是否回落
单纯内存高 ≠ 泄漏。关键看它“会不会自己下来”:
- 关闭所有编辑器标签页(
Ctrl+K W快捷键清空) - 等待至少 150 秒——这是 VSCode 默认 GC 周期,手动等比依赖“自动回收”更可靠
- 期间不要触发任何操作(如打开命令面板、切换窗口),避免干扰 GC
- 再次运行
Developer: Show Running Extensions,对比关闭前数值;若多数插件内存无明显下降,就是泄漏迹象
快速回退到上一版插件验证
确认是某插件更新引发后,最省时间的办法是回滚,而非读 changelog 猜测:
- 在扩展视图中找到对应插件,点击右下角齿轮图标 →
Install Another Version… - 选择上一个稳定版本(通常带
Published X days ago标签) - 安装后必须完全关闭当前 VSCode 窗口(
Developer: Reload Window不够,旧 Extension Host 进程仍在跑) - 重新打开项目,重复“关文件 + 等待 GC + 查内存”流程;若内存回落正常,就坐实是新版问题
- 注意:部分插件(如 GitLens)在大型仓库中需执行过
git blame或打开.git文件才会加载完整逻辑,回退后要复现相同上下文
禁用插件后内存仍不降?旧进程没退出
点了“Disable”不代表资源释放了——Extension Host 是长期运行进程,插件只是注册监听器和缓存,禁用只影响下次加载:
- 禁用目标插件后,必须彻底关闭当前窗口(macOS 要点击菜单栏
Code → Quit Visual Studio Code) - 重启 VSCode,再运行
Developer: Open Process Explorer,确认 Extension Host 进程 PID 是否变化 - 如果 PID 没变,说明旧进程还在吃内存;Linux/macOS 可手动
kill -9 [PID],Windows 可在任务管理器中结束 “Code Helper (Renderer)” 或 “Extension Host” 进程 - 特别注意:SSH Remote 或 WSL2 场景下,
~/.vscode-server目录里可能残留多个 node 进程,需进终端查ps aux | grep -i "code-server\|node"清理
真正难处理的从来不是单个插件版本,而是多个插件更新节奏不一致 + 缓存策略未对齐 —— 比如 GitLens 新版加了 WebView 缓存,但 Prettier 插件没同步清理跨插件引用,循环依赖就藏在看不见的地方。











