Java 常用启动参数全解析:内存、GC、调试与系统属性
启动参数说明
- 以-开头为标准参数,所有的 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启动参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot+jwt+微信小程序授权登录获取token的方法实例
本文主要介绍了springboot+jwt+微信小程序授权登录获取token的方法实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-03-03
Java对象级别与类级别的同步锁synchronized语法示例
这篇文章主要为大家介绍了Java对象级别与类级别的同步锁synchronized语法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步2022-03-03


最新评论