当前位置: 代码网 > it编程>编程语言>Java > Java 常用启动参数全解析:内存、GC、调试与系统属性

Java 常用启动参数全解析:内存、GC、调试与系统属性

2026年09月30日 • Java •我要评论
启动参数说明以-开头为标准参数,所有的 jvm 都要实现这些参数,并且向后兼容。-d 设置系统属性。以 -x 开头为非标准参数, 基本都是传给 jvm 的, 默认 jvm 实现这些参数的功能,但是并不

启动参数说明

  • 以-开头为标准参数,所有的 jvm 都要实现这些参数,并且向后兼容。
  • -d 设置系统属性。
  • 以 -x 开头为非标准参数, 基本都是传给 jvm 的, 默认 jvm 实现这些参数的功能,但是并不保证所 有 jvm 实现都满足,且不保证向后兼容。 可以使 用 java -x 命令来查看当前 jvm 支持的非标准参数。
  • 以 –xx:开头为非稳定参数, 专门用于控制 jvm 的行为,跟具体的 jvm 实现有关,随时可能会在 下个版本取消。

-x与-xx

  • -x: 以 -x 开头的是非标准选项(不能保证被所有的 jvm 实现都支持),如果在后续版本的 jdk 中有变更恕不另行通知。
  • -xx: 指定 -xx 的选项是不稳定、不建议随便使用的。这些选项在今后变更恕不另行通知。

+号与-号

如果值为布尔boolean型,表示开启或关闭某一功能。使用加号+表示开启某一功能,减号-表示关闭某一功能。示例如下:

-xx:+optionname -xx:-optionaname

影响软引用垃圾收集

-xx:softreflrupolicymspermb=3000

gc日志

-xx:+printgcdetails -xx:+printgctimestamps -xx:+printreferencegc -xloggc:/log/gc.log

integer缓存大小

-xx:autoboxcachemax=n

注意,只能控制最大值,最小值永远是-128

以下内容为补充介绍:

java启动参数按稳定性分为‌标准参数(-)‌、‌非标准参数(-x)‌和‌高级参数(-xx)‌,最常用的是内存、gc和调试相关参数。‌‌

🧠 内存参数

  • ‌-xms‌:设置堆内存初始大小,如 -xms512m。生产环境建议和 -xmx 设为相同值,避免堆扩容触发full gc。
  • ‌-xmx‌:设置堆内存最大大小,如 -xmx2g。堆满且gc无法回收时会抛出 outofmemoryerror。
  • ‌-xmn‌:设置年轻代大小,如 -xmn1g。官方建议为 -xmx 的 1/2~1/4,使用g1垃圾收集器时不应设置。
  • ‌-xss‌:设置每个线程的栈大小,如 -xss256k。减小该值可支持更多线程,但递归过深时可能抛出 stackoverflowerror。
  • ‌-xx:metaspacesize‌:元空间初始大小(jdk 8+),达到该值会触发full gc,如 -xx:metaspacesize=256m。
  • ‌-xx:maxmetaspacesize‌:元空间最大大小(jdk 8+),超过后抛出 outofmemoryerror: metaspace,如 -xx:maxmetaspacesize=512m。‌‌

jdk 8+ 环境下 -xx:permsize 和 -xx:maxpermsize 已废弃无效,请使用metaspace参数替代。‌‌

🗑️ gc与日志参数

  • ‌-xx:+useg1gc‌:启用g1垃圾收集器,适合大堆、多核场景。
  • ‌-xx:+useparallelgc‌:使用并行垃圾回收器,适合吞吐量优先场景。
  • ‌-xx:+useconcmarksweepgc‌:使用cms回收器(jdk 14中已移除),老年代并发回收。
  • ‌-xx:+printgcdetails‌:打印gc详细信息,排查内存问题时很有用。
  • ‌-xloggc:file‌:将gc日志输出到指定文件,如 -xloggc:gc.log。‌‌

🔧 配置与调试参数

  • ‌-d<key>=<value>‌:设置系统属性,在代码中通过 system.getproperty() 读取,如 -dspring.profiles.active=prod。
  • ‌-cp 或 -classpath‌:指定类搜索路径,如 -cp lib/*:conf。
  • ‌-xx:+heapdumponoutofmemoryerror‌:oom时自动生成堆转储文件,配合 -xx:heapdumppath=logs/heapdump.hprof 指定路径。
  • ‌-xx:errorfile=logs/java_error%p.log‌:jvm崩溃时把错误日志输出到指定文件。
  • ‌-xx:+traceclassloading‌:跟踪类的加载信息,用于诊断类加载问题。‌‌

🚀 运行模式参数

  • ‌-server‌:服务端模式,启动较慢但运行性能更高,适合生产环境。
  • ‌-xint‌:纯解释模式执行,性能大幅下降,一般仅用于调试。
  • ‌-xcomp‌:首次使用即编译所有字节码为本地代码,启动较慢但后续执行快。
  • ‌-xmixed‌:混合模式,jvm默认且推荐,解释与编译结合。‌‌

‌组合示例‌:java -xms4g -xmx4g -xx:+useg1gc -xx:maxgcpausemillis=150 -dspring.profiles.active=prod -jar app.jar。‌‌

参数优先级为命令行 > 环境变量(如 java_opts)> 配置文件;-x 和 -xx 参数可能随jvm版本变化,生产环境修改前建议充分测试。‌‌

到此这篇关于java 常用启动参数全解析:内存、gc、调试与系统属性的文章就介绍到这了,更多相关java启动参数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

赞 (0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com