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

 更新时间:2026年09月30日 10:11:04   作者:阿萨斯  
本文详细介绍了Java虚拟机(JVM)的启动参数,包括标准参数(-D),非标准参数(-X和-XX),布尔开关的使用,如软引用垃圾收集的控制,以及GC日志和Integer缓存的设置,特别强调了非标准参数的不稳定性及兼容性问题,感兴趣的朋友一起看看吧

启动参数说明

  • 以-开头为标准参数,所有的 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启动参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中的泛型详细解析

    Java中的泛型详细解析

    这篇文章主要介绍了Java中的泛型详细解析,泛型又称参数化类型,是JDK5.0出现的新特性,解决了数据类型的安全型问题,Java泛型可以保证如果程序在编译时没用发出警告,运行时就不会产生classCastException异常,需要的朋友可以参考下
    2024-01-01
  • java中对象的序列化与反序列化深入讲解

    java中对象的序列化与反序列化深入讲解

    这篇文章主要给大家介绍了关于java中对象的序列化与反序列化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 详解Spring Boot配置文件之多环境配置

    详解Spring Boot配置文件之多环境配置

    本篇文章主要介绍了详解Spring Boot配置文件之多环境配置 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • springboot+jwt+微信小程序授权登录获取token的方法实例

    springboot+jwt+微信小程序授权登录获取token的方法实例

    本文主要介绍了springboot+jwt+微信小程序授权登录获取token的方法实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java实现全图背景水印的示例详解

    Java实现全图背景水印的示例详解

    这篇文章主要为大家详细介绍了如何利用Java实现全图背景水印的方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-02-02
  • 在maven工程里运行java main方法

    在maven工程里运行java main方法

    这篇文章主要介绍了在maven工程里运行java main方法,需要的朋友可以参考下
    2014-04-04
  • java自动生成编号的实现(格式:yyMM+四位流水号)

    java自动生成编号的实现(格式:yyMM+四位流水号)

    这篇文章主要介绍了java自动生成编号的实现(格式:yyMM+四位流水号),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • MyBatis-Plus多数据源的示例代码

    MyBatis-Plus多数据源的示例代码

    本文主要介绍了MyBatis-Plus多数据源的示例代码,包括依赖配置、数据源配置、Mapper 和 Service 的定义,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • Java对象级别与类级别的同步锁synchronized语法示例

    Java对象级别与类级别的同步锁synchronized语法示例

    这篇文章主要为大家介绍了Java对象级别与类级别的同步锁synchronized语法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • SpringBoot 配置文件加载位置与优先级问题详解

    SpringBoot 配置文件加载位置与优先级问题详解

    这篇文章主要介绍了SpringBoot 配置文件加载位置与优先级问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09

最新评论