应通过code --status定位Extension Host中RSS超600MB的进程,再用ps -p [PID] -o args=或任务管理器查命令行,若含java -jar .jdt.ls.、tsserver、pyright等即为语言服务器;Java项目需禁用自动构建、二进制索引并排除target目录,TypeScript/Python需限制监听范围并关闭日志,禁用后须完全退出VSCode并重启窗口才能释放内存。

怎么确认是语言服务器在吃内存
别只盯着任务管理器里那个“Code Helper”,真正该查的是 Extension Host 进程里具体哪个子进程在扛压。运行 code --status,找到 RSS 占用超 600MB 的条目,再用 ps -p [PID] -o args=(macOS/Linux)或任务管理器“详细信息”页看完整命令行——如果看到 java -jar .*jdt.ls.*、tsserver、pyright 或 python.*language,基本就是它了。
Java 项目:关掉自动构建和二进制索引
redhat.java 默认会把 target/、lib/ 甚至本地 Maven 仓库里的 JAR 全解压分析,这是内存飙到 1.8GB 的主因。必须在项目根目录的 .vscode/settings.json 中写:
{
"java.configuration.updateBuildConfiguration": "disabled",
"java.symbols.includeBinaries": false,
"java.autobuild.enabled": false
}
注意:全局设置不生效;改完后必须完全退出 VSCode(macOS 要退出菜单栏图标),再重新打开工作区。
TypeScript/Python:限制监听范围与关闭日志
TS 和 Python 的语言服务默认监听整个工作区,遇到 node_modules 或 venv 就容易卡住。除了加 files.watcherExclude,还得针对性调参:
-
typescript.tsserver.watchOptions设为{"watchFile": "useFsEvents", "watchDirectory": "useFsEvents"},避免轮询 -
typescript.server.logging设为"off",关掉日志减少 I/O 压力 - Python 用户可禁用
python.analysis.extraPaths,或换用轻量级pylsp替代 Pylance
为什么禁用扩展后内存还是下不去
语言服务器类插件(比如 redhat.java、ms-python.python)一旦激活就会常驻,点“Disable”只是阻止下次加载,旧进程不会退出。必须:
- 右键插件 → Disable (For All Folders)(不是仅当前工作区)
- 完全关闭 VSCode 窗口(
Developer: Reload Window没用) - 重启后跑
ps aux | grep -i "jdt\.ls\|tsserver\|pyright",确认 PID 是否清零
很多问题其实卡在“以为禁用了,其实还在后台跑”,尤其是跨工作区复用 Extension Host 的场景,这点最容易被忽略。


















