

新闻资讯
行业动态应使用VSCode内置的Developer: Open Process Explorer查看Renderer、Extension Host、Search三进程内存占用;Extension Host超500MB或Search超300MB需排查插件泄漏或rg.exe扫描;禁用插件后必须重启窗口,配合.watcherExclude等设置限制node_modules监听。
VSCode 是多进程架构,光看任务管理器里一个 Code Helper 进程的内存是没用的——它可能只是“替身”,真正耗资源的藏在后台。真正该盯的是三个核心进程:Renderer(界面渲染)、Extension Host(所有插件运行环境)、Search(全文搜索服务)。
Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入并执行 Developer: Open Process Explorer —— 这是 VSCode 内置的轻量级性能面板,比系统任务管理器更精准Extension Host 占用超 500MB 且不随关闭文件下降,基本可判定是某个插件泄漏;若 Search 持续 >300MB,大概率是 rg.exe(RipGrep)在疯狂扫描 node_modules 或符号链接Developer: Show Running Extensions 确认是否真没在跑扩展不是“开关灯”,禁用 ≠ 停止进程。很多插件注册了 onStartupFinished 或 onLanguage:typescript 等激活事件,一旦触发就会常驻内存,直到 VSCode 完全退出。
Developer: Show Running Extensions,查看实时 CPU 和内存占用,记下前两名插件名(比如 esbenp.prettier-vscode、ms-python.python)Disable (Workspace) 或 Disable (For All Folders),然后**必须重启 VSCode 窗口**(不是重载窗口),否则旧进程不会释放ps aux | grep -i "tsserver\|pyright\|python.*language",找到 PID 后
kill -9 [PID],再观察 Extension Host 内存是否回落VSCode 默认为整个工作区注册内核级文件监听(inotify),遇到 node_modules 这种几万小文件的目录,会持续分配内存且几乎不回收——这是最隐蔽也最常见的内存爬升原因,和插件无关。
.vscode/settings.json 中添加:{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/**": true
},
"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true
},
"search.followSymlinks": false
}
files.watcherExclude 阻止 Electron 创建监听句柄;search.exclude 让 rg.exe 跳过扫描;search.followSymlinks 关闭后能避免跨盘符或 Docker volume 引发的无限遍历Ctrl+, → Open Settings (JSON)),但不推荐——不同项目结构差异大,全局排除可能误伤如果你用 VSCode Remote-WSL 开发,Extension Host 和 Language Server 其实跑在 Linux 子系统里,而 Windows 任务管理器看到的只是代理进程。此时内存问题往往叠加了 WSL2 自身的内存驻留特性。
/etc/wsl.conf 或用户家目录的 .wslconfig 中强
制限制资源:[wsl2] memory=3GB swap=1GB processors=2
git.enabled: false + git.autorefresh: false,否则 Windows 的 git.exe 会和 WSL2 的 git 双重监听,导致文件变更事件重复触发、内存翻倍/mnt/c/ 下直接打开项目——WSL2 访问 Windows 文件系统有 9P 协议开销,文件监听器会频繁卡住并缓存失败请求。正确做法是把代码放在 ~/projects/(Linux 原生路径),再用 VSCode Remote-WSL 打开最常被忽略的一点:VSCode 的“轻量级窗口”模式(Window: Open New Window (Lightweight))不加载任何扩展、不启动 Extension Host,只保留基础编辑能力——适合查日志、改配置、临时审代码。它不是功能阉割,而是明确区分“开发态”和“浏览态”的内存隔离策略。别总想着“全都要”,该切就切。