Code Helper (Plugin) 吃掉了我的内存:一次 VSCode 插件内存暴涨排查实录

VSCode 插件内存占用过高问题分析

最近在使用 VSCode 进行开发时,发现 macOS 活动监视器显示 Code Helper (Plugin) 进程内存占用较高,最高达到5GB+ ,导致系统卡顿。

基本环境

  • VSCode 版本:1.88+
  • macOS 版本:15.3
  • 开发项目类型:前端 / WebGL / Rust / Python / Bazel / Docker

问题现象

  1. 活动监视器中:
  • 多个 Code Helper (Plugin) 进程内存占用较高
  • 最高达 5GB+
  1. VSCode 内部查看

* Developer: Show Running Extensions 显示正在运行的插件,不能直接看到插件的内存占用情况 * Developer: Open Process Explorer 查看vscode进程资源管理器,没有显示高内存占用的插件

  1. 通过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 回收,导致内存突增。

建议自动化检查插件内存问题,定期进行清理和优化配置。

相关推荐
慢功夫3 天前
💡第七篇:VSCode语言服务中,代码跳转和诊断是怎么做的?
前端·visual studio code
yiyesushu4 天前
GitHub Copilot 在 vscode 中使用之 Prompt
人工智能·visual studio code
程序员Supers6 天前
VSCode 好用插件推荐
visual studio code
慢功夫7 天前
💡第五篇:VSCode插件是如何与主进程通信的?
前端·visual studio code
凉凉的知识库7 天前
用 GPT-5.6 SOL 写了个 VS Code 插件,效果出乎意料
api·测试·visual studio code
土土哥tutuge9 天前
开源项目 Claude Code Notifier Plus:让 Claude Code 真正需要你时再提醒你
ai编程·visual studio code
慢功夫10 天前
💡第四篇:编辑器内核, Monaco model、URI、dirty 状态和 tabs 是怎么协作的?
前端·visual studio code
annekqiu11 天前
VS code 部署agent
github·visual studio code
RequieMa11 天前
再见了,所有的 VS Code 预览窗
visual studio code
mCell13 天前
从 VS Code 学系统架构:回到当时,理解它为什么这样演进
架构·源码阅读·visual studio code