VS Code 在 macOS 上因内存过高崩溃,主因是扩展、文件监听或语言服务器失控;需通过进程探索器定位 Extension Host、Search 和 Shared Process 的 RSS 内存,排除 node_modules 监听泄漏,禁用高风险扩展并彻底重启,配合启动参数优化可将内存压至 600MB 以内。
vs code 在 macos 上因内存过高崩溃,通常不是编辑器本身出问题,而是扩展、文件监听或语言服务器失控导致的。排查要从进程级入手,而不是只看“code helper”这个壳进程。
用内置工具定位真实高耗进程
别依赖活动监视器里模糊的“Code”条目——它不区分具体模块。打开命令面板(Cmd+Shift+P),输入并执行:
Developer: Open Process Explorer
重点关注三个子进程的 RSS(实际内存占用):
- Extension Host:超过 500MB,基本是某个插件常驻泄漏(如 GitLens、Python、Prettier)
-
Search:长期高于 300MB,大概率是
rg.exe在扫node_modules或符号链接目录 - Shared Process:偏高说明同步、遥测或自动更新在后台持续拉取数据
检查文件监听是否引发内核级泄漏
VS Code 默认用 chokidar 递归监听整个工作区,遇到 node_modules 这类几万小文件的目录,会持续申请 inotify 句柄且几乎不回收——这是 macOS 上最隐蔽的内存爬升根源。
在 settings.json 中加入以下配置(注意语法必须严格):
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/.git/**": true,
"**/*.log": true
}
⚠️ 生效前提:必须完全退出 VS Code(包括菜单栏图标),再重新打开工作区;仅重载窗口无效。
禁用高风险扩展并彻底清退进程
某些插件(尤其是 Python、ESLint、GitLens、Remote-SSH)一旦激活就注册了 onStartupFinished,禁用后旧进程仍驻留。
- 先运行 Developer: Show Running Extensions,确认哪些插件真在运行
- 右键目标插件 → Disable (For All Folders)(不是仅当前工作区)
- 完全退出 VS Code(macOS 要点菜单栏图标 → Quit)
- 重启后若仍有残留,终端执行:
ps aux | grep -i "pyright\|tsserver\|python.*language" | awk '{print $2}' | xargs kill -9
验证与辅助优化
如果崩溃仍偶发,可临时启用更保守的启动参数:
- 终端运行:
code --disable-gpu --max-memory=2048(限制总内存上限) - 关闭硬件加速:
"window.experimental.offscreen": false(防止渲染线程卡死) - 禁用预览标签:
"workbench.editor.enablePreview": false(减少 renderer 内存累积)
这些操作组合起来,多数 macOS 用户能将内存从 2GB+ 稳定压到 600MB 以内,崩溃频率大幅下降。


















