目录
- Jvm参数分类
- 总结
- 快速概览
- 1. 标准参数 (Standard Options)
- 2. 扩展参数 (X Options)
- 3. 高级运行时参数 (XX Options)
- 布尔类型
- 键值类型
- 4. 系统属性 (System Properties)
- 5. 主类参数 (Main Class Arguments)
Jvm参数分类
总结
Java 命令行参数的完整体系:
-
标准参数 - 基础功能,最稳定
- 所有 JVM 实现都必须支持,最稳定,例如:-version、-cp、-jar、-D
= -D<name>=<value>
在技术分类上属于标准参数,它是稳定的,但它设置的是系统属性。
- 所有 JVM 实现都必须支持,最稳定,例如:-version、-cp、-jar、-D
-
X 参数 - 扩展功能,相对稳定
- 非标准但相对稳定,以
-X
开头,例如:-Xmx512m、-Xms256m
- 非标准但相对稳定,以
-
XX 参数 - 高级调优,不稳定,启用功能:-XX:+
- 不稳定,用于 JVM 调优,以
-XX:
开头,例如:-XX:+UseG1GC
- 不稳定,用于 JVM 调优,以
-
系统属性 - 应用配置,稳定
- 传递给应用程序,通过
System.getProperty()
获取,-D
开头,例如:-Dfile.encoding=UTF-8
- 传递给应用程序,通过
-
主类参数 - 业务参数
-
传递给
main
方法的String[] args
,例如:java Main arg1 arg2 arg3 # args = ["arg1", "arg2", "arg3"]
-
-
模块参数 - 模块化支持 (Java 9+)
-
代理参数 - Agent 支持
-
编译器参数 - 编译控制
-
诊断参数 - JVM 监控
-
实验性参数 - 新特性尝鲜
快速概览
参数类型 | 前缀 | 稳定性 | 示例 | 用途 |
---|---|---|---|---|
标准参数 | - |
稳定 | -version |
JVM 基本功能 |
X 参数 | -X |
相对稳定 | -Xmx512m |
扩展功能 |
XX 参数 | -XX: |
不稳定 | -XX:+UseG1GC |
JVM 调优和调试 |
系统属性 | -D |
稳定 | -Dkey=value |
应用配置 |
1. 标准参数 (Standard Options)
特点: 所有 JVM 实现都必须支持,最稳定
# 程序执行
-jar <jarfile> # 执行 JAR 文件
-cp <classpath> # 类路径
-classpath <classpath> # 同 -cp
-D<name>=<value> # 系统属性(虽然带D,但属于标准参数)# 信息查看
-version # 版本信息
-help # 帮助信息
-showversion # 显示版本后继续执行# 编译相关(javac 命令)
-d <directory> # 输出目录
-sourcepath <path> # 源文件路径
2. 扩展参数 (X Options)
特点: 非标准但相对稳定,以 -X
开头
# 内存管理(最常用)
-Xmx<size> # 最大堆内存,如 -Xmx512m
-Xms<size> # 初始堆内存,如 -Xms256m
-Xmn<size> # 年轻代大小
-Xss<size> # 线程栈大小# 调试和分析
-Xdebug # 启用调试
-Xrunhprof # 性能分析
-XshowSettings # 显示设置
-Xlog:gc* # GC 日志# 其他扩展
-Xfuture # 启用最严格的检查
-Xcheck:jni # JNI 函数检查
3. 高级运行时参数 (XX Options)
特点: 不稳定,用于 JVM 调优,以 -XX:
开头
布尔类型
# 启用功能:-XX:+<option>
-XX:+UseG1GC # 使用 G1 垃圾回收器
-XX:+PrintGCDetails # 打印 GC 详情
-XX:+HeapDumpOnOutOfMemoryError # OOM 时生成堆转储# 禁用功能:-XX:-<option>
-XX:-UseBiasedLocking # 禁用偏向锁
-XX:-DisableExplicitGC # 禁用 System.gc()
键值类型
# 内存设置
-XX:MaxHeapSize=<size> # 同 -Xmx
-XX:NewRatio=<ratio> # 老年代/年轻代比例
-XX:MaxMetaspaceSize=<size> # 最大元空间# GC 调优
-XX:MaxGCPauseMillis=<ms> # 最大 GC 暂停时间
-XX:G1HeapRegionSize=<size> # G1 区域大小
4. 系统属性 (System Properties)
特点: 传递给应用程序,通过 System.getProperty()
获取
# 标准系统属性
-Dfile.encoding=UTF-8 # 文件编码
-Duser.timezone=GMT+08:00 # 时区设置
-Djava.security.egd=file:/dev/./urandom # 随机数生成# 应用配置
-Dspring.profiles.active=prod
-Dserver.port=8080
-Dlog4j.configuration=file:log4j.xml
5. 主类参数 (Main Class Arguments)
特点: 传递给 main
方法的 String[] args
java Main arg1 arg2 arg3 # args = ["arg1", "arg2", "arg3"]
java -jar app.jar config.properties # args[0] = "config.properties"