OpenJDK在Eclipse里怎么添加VM arguments

冬静酱_2455

冬静酱_2455

2026-11-03

999人浏览

原创

正确入口是Run → Run Configurations… → Java Application → Arguments标签页 → VM arguments输入框;-XX:PermSize等已废弃,应使用-XX:MetaspaceSize等新参数;改后无效主因是未保存配置、选错运行项或JDK版本不匹配。

openjdk在eclipse里怎么添加vm arguments

在Eclipse中添加VM arguments的正确入口

不是改 eclipse.ini,也不是全局设置 JRE 的 Default VM Arguments —— 那些只影响 Eclipse 自身或所有 Java 运行时环境。你要配的是「单个 Java 应用程序」启动时的 JVM 参数,必须进运行配置(Run Configuration)里设。

操作路径:Run → Run Configurations… → Java Application → 新建或选中已有配置 → Arguments 标签页 → VM arguments 输入框。

常见误操作:在 Program arguments 里写 -Xmx2g,结果报错或无效——因为那是传给 main(String[] args) 的,JVM 根本不认。

哪些 VM arguments 现在还安全可用

Java 8 之后永久代(PermGen)已被元空间(Metaspace)取代,-XX:PermSize 和 -XX:MaxPermSize 已被完全移除,再用会触发 Unrecognized VM option 错误。

当前推荐用的稳定参数(OpenJDK 17/21 兼容):

  • -Xms512m -Xmx2g:堆内存初始与最大值,建议设为相等避免 GC 时动态伸缩
  • -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m:防止热部署时类元数据堆积溢出
  • -Dfile.encoding=UTF-8:显式指定编码,避免 Windows 下默认 GBK 导致读文件乱码
  • -Dsun.net.client.defaultConnectTimeout=5000:控制 HTTP 连接超时,调试网络调用时有用

慎用或禁用:

  • -XX:ReservedCodeCacheSize:现代 OpenJDK(17+)已自动管理,手动设反而可能限制 JIT 编译
  • -XX:+UseParallelGC 等垃圾收集器开关:除非明确压测对比,否则让 JVM 自适应更稳妥

为什么改了没生效?三个高频原因

你填了 -Xmx4g 却还是抛 OutOfMemoryError: Java heap space,大概率是以下其一:

  • 运行配置没保存:点完 Apply 后忘了点 Run,或者点了 Close 没保存,下次启动仍用旧配置
  • 选错了配置项:项目里有多个 Run Configuration(比如 MyApp (1)、MyApp (2)),你改的是 A,实际运行的是 B
  • JDK 版本不匹配:用 JDK 21 启动,却写了 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 这类 G1 参数,而你的项目实际绑定的是 JDK 8 JRE(Eclipse 中每个运行配置可指定不同 JRE)

验证是否生效最直接的办法:在代码里加一行 System.out.println("Max memory: " + Runtime.getRuntime().maxMemory() / 1024 / 1024 + " MB");,看输出是否接近你设的 -Xmx 值。

Tomcat 集成场景下 VM arguments 的特殊位置

如果你在 Eclipse 里用内置 Tomcat 跑 Web 应用,Run Configurations → Java Application 里的 VM arguments 是无效的——那只是启动一个普通 Java 类,不是 Tomcat 容器。

真正起作用的位置是:Server 视图 → 双击 Tomcat 服务器 → Open launch configuration → Arguments 标签页 → VM arguments。

这里填的参数会传给 Tomcat 启动进程(即 catalina.sh/.bat 最终调用的 java 命令),所以:

  • Web 应用的堆内存、Metaspace、系统属性都得在这里设
  • 如果同时启用了多个 Tomcat 实例,每个实例的配置相互独立,不会冲突
  • 热部署频繁时,-XX:MaxMetaspaceSize 必须设,否则几轮 redeploy 后必报 OutOfMemoryError: Metaspace

别漏掉这个细节:Eclipse 内置 Tomcat 默认使用 workspace metadata 目录下的临时 catalina.base,它和你手动安装的 Tomcat 完全无关,参数修改只影响当前 workspace。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
eclipse教程
eclipse教程

php中文网为大家带来eclipse教程合集,eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。php中文网还为大家带来eclipse的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

710

5

eclipse怎么设置中文
eclipse怎么设置中文

eclipse设置中文的方法:除了设置界面为中文外,你还可以为Eclipse添加中文插件,以便更好地支持中文编程。例如,你可以安装EBNF插件来支持中文变量名,或安装Chinese Helper来提供中文帮助文档。本专题为大家提供eclipse设置中文相关的各种文章、以及下载和课程。

2023.07.24

5946

6

c语言编程软件有哪些
c语言编程软件有哪些

c语言编程软件有GCC、Clang、Microsoft Visual Studio、Eclipse、NetBeans、Dev-C++、Code::Blocks、KDevelop、Sublime Text和Atom。更多关于c语言编程软件的问题详情请看本专题的文章。php中文网欢迎大家前来学习。

2023.11.02

9259

18

Eclipse版本号有哪些区别
Eclipse版本号有哪些区别

区别:1、Eclipse 3.x系列:Eclipse的早期版本,包括3.0、3.1、3.2等;2、Eclipse 4.x系列:Eclipse的最新版本,包括4.0、4.1、4.2等;3、Eclipse IDE for Java Developers等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

2804

5

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

662

5

eclipse设置中文全教程
eclipse设置中文全教程

本专题整合了eclipse设置中文相关教程,阅读专题下面的文章了解更多详细操作。

2025.10.10

3846

11

eclipse字体放大教程
eclipse字体放大教程

本专题整合了eclipse字体放大教程,阅读专题下面的文章了解更多详细内容。

2025.10.10

3865

12

eclipse左边栏不见了解决方法
eclipse左边栏不见了解决方法

本专题整合了eclipse左边栏相关教程,阅读专题下面的文章了解更多详细内容。

2025.10.15

528

3

eclipse字体相关教程
eclipse字体相关教程

本专题整合了eclipse字体设置相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.26

874

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
OpenJDK项目Wiki
OpenJDK项目Wiki

共0课时 | 0人学习

OpenJDK构建指南
OpenJDK构建指南

共0课时 | 0人学习

OpenJDK官网文档
OpenJDK官网文档

共0课时 | 0人学习