vscode高cpu占用90%以上源于后台子进程异常,应先运行code --status定位extension host、tsserver等高占用进程,再配置files.watcherexclude排除node_modules等目录、降级语言服务、禁用高开销插件并彻底重启窗口。

VSCode 高 CPU 占用,90% 以上不是编辑器本身的问题,而是某个后台子进程在“疯跑”——直接运行 code --status 就能定位真凶,不用猜、不重装、不盲禁。
怎么看哪个进程在吃 CPU
别盯着任务管理器里那个“Code Helper”进程——它只是壳。真正干活的是子进程,code --status 会立刻列出所有子进程的 PID、CPU% 和内存占用:
-
Extension HostCPU% 长期 >60%?说明某个扩展(比如esbenp.prettier-vscode或gitlens.gitlens)在反复解析或监听失败后卡死 - 看到
tsserver、pyright或cpptools-srv占高?不是语言本身慢,是它正在全量加载node_modules/@types或整个依赖树做类型推导 -
Search进程内存 >300MB?八成是rg.exe(RipGrep)在扫node_modules或符号链接目录 -
Shared Process占高?大概率是遥测、同步或自动更新在后台轮询;可临时加"telemetry.telemetryLevel": "off"验证
记下高占用进程的 PID,再用 ps -p [pid] -o args=(macOS/Linux)或任务管理器“详细信息”页右键 → “打开文件位置”,确认命令行是否含 pylance、tsserver 等关键词。
为什么 files.watcherExclude 配了没用
VSCode 默认用 chokidar 递归监听整个工作区,node_modules 这种几万小文件的目录一进来,inotify/FSEvents 就会爆炸式触发事件,Node.js 子进程直接满载——你什么都没干,CPU 就稳在 70%+。
- 必须写在项目根目录的
.vscode/settings.json中(不是用户级设置) - 通配符必须是
"**/node_modules/**": true,写成"node_modules/**"、"*/node_modules/*"或"node_modules"全无效 - 常见必加项:
"**/dist/**": true、"**/build/**": true、"**/.git/**": true、"**/*.log": true、"**/coverage/**": true - 改完必须完全关闭当前 VSCode 窗口(不是重载),再重新打开该工作区才生效
- Linux 用户若仍卡顿,运行
cat /proc/sys/fs/inotify/max_user_watches,低于524288就要调高
语言服务器降级比禁用插件更有效
Python 和 TypeScript 的语言服务不是“卡”,是默认设计为深度语义分析,中大型项目下内存驻留轻松破 1.2GB,CPU 持续拉高是必然结果。
- Python:把
python.languageServer从Pylance改为Jedi(Jedi不加载全部依赖,只做基础补全) - TypeScript:关掉
typescript.preferences.includePackageJsonAutoImports,避免 npm 包导入时反复解析node_modules/@types - ESLint:设
eslint.run为"onSave",并精简eslint.probe的文件类型(比如去掉.json) - GitLens:关掉
gitlens.codeLens.enabled和gitlens.hovers.enabled,能降 30%–50% 内存
禁用扩展必须彻底重启窗口
点“Disable”只是阻止新加载,旧进程仍常驻内存。很多插件注册了 onStartupFinished 或 onLanguage:python,一旦激活就一直跑着。
- 先运行命令面板中的
Developer: Show Running Extensions,确认ms-python.python或esbenp.prettier-vscode确实在运行中 - 右键该插件 →
Disable (For All Folders)(注意不是仅当前工作区) - 必须完全关闭当前 VSCode 窗口(不是
Developer: Reload Window),再重新打开工作区 - 对 Python 项目,建议手动清理残留:执行
ps aux | grep -i "pyright\|python.*language",找到 PID 后kill -9 [PID]
容易被忽略的是:Dev Container 场景下,files.watcherExclude 必须在容器内生效,且 devcontainer.json 中的 mounts 若未设为只读,也会引发 inotify 事件风暴。











