插件自动更新不直接吃内存,但触发的重载、语言服务器重启和缓存重建会瞬间拉高cpu和内存;应禁用extensions.autoupdate,改用手动更新,并配合延迟加载、清理旧版本缓存及进程监控优化性能。

插件自动更新本身不直接吃内存,但更新触发的重载、语言服务器重启、缓存重建会瞬间拉高 CPU 和内存——尤其在后台静默更新时,你根本不知道它正在重建整个 TS 项目索引。
禁用自动更新:防止后台静默重载
VSCode 默认开启 extensions.autoUpdate,插件会在后台下载并安装更新,完成后自动重载扩展宿主进程。这个“重载”不是轻量级刷新,而是杀掉旧 Extension Host、启动新进程、重新初始化所有插件服务(包括 tsserver、pyright、eslint server),极易造成内存尖峰和卡顿。
- 打开
settings.json,设为"extensions.autoUpdate": false - 不要依赖全局设置——某些企业策略或远程开发环境会强制覆盖,建议在工作区根目录的
.vscode/settings.json中显式声明 - 禁用后,更新需手动执行:
Ctrl+Shift+P→Extensions: Check for Updates,你可选时间、观察资源变化再确认
延迟加载 + 按需激活:减少启动时资源争抢
很多插件(如 esbenp.prettier-vscode、ms-python.python)注册了 onStartupFinished 或 onLanguage:javascript 等宽泛激活事件,导致一开 VSCode 就全量加载。即使你当前只写 Markdown,Python 插件也在后台跑着 LSP 连接。
- 改用
extensionKind控制运行位置:在工作区extensions.json(非 settings.json)中指定关键插件仅在 UI 进程运行,避免污染 Extension Host - 对非核心插件,手动关闭其自动激活能力:比如 GitLens 可关掉
gitlens.codeLens.enabled和gitlens.hovers.enabled,它们是内存大户 - 语言类插件优先启用
editor.codeActionsOnSave替代实时监听,例如把"editor.codeActionsOnSave": { "source.fixAll.eslint": true }当作“按保存触发”,而非每键触发
清理更新残留:避免旧版本缓存堆积
VSCode 不会自动删除旧版插件文件。每次更新后,老版本仍保留在 ~/.vscode/extensions/ 下(macOS/Linux)或 %USERPROFILE%\.vscode\extensions\(Windows),部分插件(如 C/C++ 工具链)还会保留独立缓存目录(~/.cache/vscode-cpptools),长期积累可达 GB 级。
- 定期手动清理:
ls -lt ~/.vscode/extensions | head -20查看最近修改的插件目录,对比名称与当前启用列表,删掉明显过期的(如ms-python.python-2025.1.1和ms-python.python-2026.7.0并存时,留后者) - 对 C/C++ 插件,清空
~/.cache/vscode-cpptools;对 TypeScript,可删~/.vscode/.typescript下旧版本子目录(注意别删错正在用的) - Windows 用户额外检查:
%LOCALAPPDATA%\Programs\Microsoft VS Code\resources\app\extensions——这是内置扩展备份路径,极少需动,但若发现重复的typescript-language-features版本,可确认后删
监控更新行为:识别真凶而不是猜
你以为是“更新”在耗资源?其实更可能是某插件更新后启用了新功能(比如 Prettier v3 默认开启 prettier.formatOnSaveTimeout 或 ESLint v9 启用 flat config 解析器),导致后台解析压力翻倍。
- 更新前先开
Developer: Open Process Explorer,记下 Extension Host 和各子进程内存 baseline - 更新后立即再开一次,重点对比
Memory列:若某个插件进程从 120MB 跳到 480MB,且CPU持续 >30%,基本锁定它 - 查该插件 release notes(GitHub 或 marketplace 页面),看是否引入了新监听逻辑、默认开启新规则或变更了缓存策略
真正影响体验的从来不是“有没有更新”,而是“更新后有没有重载、有没有重建索引、有没有多开一个语言服务进程”。控制住这三点,比调任何 maxInputTokens 都管用。











