VSCode中Java内存需分三处配置:jdt.ls用java.jdt.ls.vmargs(影响代码补全)、应用启动用launch.json的vmArgs、JUnit测试用java.test.defaultjvmoptions,三者互不影响,漏配会导致OOM或乱码。

VSCode本身不运行在JVM上,所以你调的不是“VSCode的内存”,而是三个独立JVM进程的内存:Java语言服务器(jdt.ls)、你调试/运行的Java应用、以及JUnit测试运行器。设错地方,参数根本不会生效。
java.jdt.ls.vmargs 配置语言服务器内存
这是影响代码补全、跳转、错误提示响应速度的关键。默认 -Xmx2G 对中大型Spring Boot项目明显不够,容易卡顿或触发GC抖动。
-
java.jdt.ls.vmargs必须写在 VSCode 的全局或工作区settings.json里,不是launch.json - 推荐值:
-Xms512m -Xmx4096m -XX:+UseG1GC(大项目可上-Xmx6G,但别超物理内存 70%) - 不要加
-Dfile.encoding=UTF-8在这里——它属于应用层,放这儿会被忽略 - 改完必须重启 VSCode(仅重载窗口无效),否则
jdt.ls进程仍用旧参数
launch.json 中的 vmArgs 启动你的 Java 应用
这个配置只影响你按 F5 调试或 Ctrl+F5 运行时启动的 JVM,和语言服务器无关。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 在
.vscode/launch.json的某个configuration下添加"vmArgs": "-Xms512m -Xmx2g -XX:MaxMetaspaceSize=512m" - 注意:是字符串字段,不是数组;若要传多个参数,用空格分隔,不要换行或逗号
- 如果用 Maven 命令(如
mvn spring-boot:run)启动,则vmArgs完全无效,得改pom.xml里的maven-surefire-plugin或spring-boot-maven-plugin -
-Xss在这里生效,比如递归深度大时设-Xss1m,但别低于 256k,否则可能触发StackOverflowError
java.test.defaultjvmoptions 控制 JUnit 测试内存
VS Code Java 扩展 v0.42.0+ 才支持该设置,老版本只能靠 launch.json 单独配测试配置,或硬编码进构建工具。
立即学习“Java免费学习笔记(深入)”;
- 加到工作区
.vscode/settings.json中:"java.test.defaultjvmoptions": ["-Xmx3g", "-Dfile.encoding=UTF-8"] - 必须是 JSON 数组,每个参数单独一项;
-Dfile.encoding=UTF-8很关键,否则中文路径/资源加载失败,报UnsupportedCharsetException: gbk - 该设置对右键“Run Test”和侧边栏点击测试都生效,但对终端里手动
mvn test无效 - 如果测试启动卡在 “Launching JUnit Platform”,大概率是缺
-Dfile.encoding=UTF-8或代理阻塞 DNS 解析,查Output → Java Test Runner面板看真实启动命令
最容易被忽略的是三者完全隔离:改了 java.jdt.ls.vmargs 不代表你的 Spring Boot 就有更多堆内存;给 launch.json 加了 vmArgs 也不影响单元测试。每个 JVM 进程只认自己那一份参数,漏配一个,就可能在补全、运行、测试任一环节突然 OOM 或乱码。

















