VSCode 插件内存占用过高问题分析
最近在使用 VSCode 进行开发时,发现 macOS 活动监视器显示 Code Helper (Plugin)
进程内存占用较高,最高达到5GB+ ,导致系统卡顿。
基本环境
- VSCode 版本:1.88+
- macOS 版本:15.3
- 开发项目类型:前端 / WebGL / Rust / Python / Bazel / Docker
问题现象
- 活动监视器中:
- 多个
Code Helper (Plugin)
进程内存占用较高 - 最高达 5GB+

- VSCode 内部查看
* Developer: Show Running Extensions
显示正在运行的插件,不能直接看到插件的内存占用情况 *
Developer: Open Process Explorer
查看vscode进程资源管理器,没有显示高内存占用的插件
- 通过mac系统提供的进程采样去拉取采样文件,终于是有一点线索 采样中有个关键指标,表示是物理内存占用而非虚拟内存
yaml
Physical footprint: 5.3G
初步判断
排除是系统问题(swap / 页面缓存),极大概率是:
- 插件分配了大量内存没有释放。
- V8 引擎(Node.js)管理的内存。
- ArrayBuffer / WebGL Buffer / 数据缓冲区。
原因分析
根据 macOS sample
文件分析,发现内存占用高的核心原因为 V8 引擎 (Node.js / Electron) 内存分配过多,并且没有被 GC 采集。
关键证据:
- 堆栈顶大量出现在
* v8::CodeEvent::GetScriptLine()
* node::FreeArrayBufferAllocator()
- 大量 WebGL 相关 symbol :
* fontations_ffi$cxxbridge1$BridgeOutlineCollection
* BridgeHintingInstance
已安装的疑似插件
插件 | 风险原因 | 备注 |
---|---|---|
circledev.glsl-canvas | WebGL Shader 渲染 | V8 Buffer内存泄露高低 |
raczzalan.webgl-glsl-editor | WebGL Editor | Buffer 分配频繁 |
antfu.slidev | Markdown+WebGL | 处理复杂渲染内容 |
figma.figma-vscode-extension | WebView | 带有复杂 UI 渲染 |
vscode-bazel | 大项目 index | cache 存储高 |
ms-vscode-remote.remote-containers | Docker 运行环境 | 多进程合作 |
rust-lang.rust-analyzer | Rust 语言服务 | 清理算法已最佳化 |
解决方案
1. 先行禁用高危插件
bash
code --disable-extension circledev.glsl-canvas \
--disable-extension raczzalan.webgl-glsl-editor \
--disable-extension antfu.slidev \
--disable-extension figma.figma-vscode-extension
观察内存是否消退
2. 使用插件自动排查
该指令会按照折半法自动关闭当前的一半插件,可以一直执行直到所有的插件都关闭
Plain
Help: Start Extension Bisect
3. 优化 VSCode 配置
settings.json
json
"files.autoSave": "afterDelay", // 停止输入后延迟自动保存
"workbench.editor.enablePreview": false, // 禁止打开文件时默认展示预览
"editor.largeFileOptimizations": true // 关闭大文件的部分特性(语法高亮等)
结论
在 VSCode 使用 WebGL / Rust / 可视化类插件时,必须注意内存占用问题,尤其是使用自定义 WebView / Buffer 分配 / FFI 渲染时,容易导致内存没有被 GC 回收,导致内存突增。
建议自动化检查插件内存问题,定期进行清理和优化配置。