常用JVM启动参数

常用JVM启动参数大全

1. 内存相关参数

堆内存设置

参数 说明 示例
-Xms 初始堆大小 -Xms512m
-Xmx 最大堆大小 -Xmx4g
-Xmn 新生代大小 -Xmn1g
-XX:NewRatio 老年代/新生代比例 -XX:NewRatio=2 (老年代是新生代2倍)
-XX:SurvivorRatio Eden/Survivor区比例 -XX:SurvivorRatio=8 (Eden占80%)

非堆内存设置

参数 说明 示例
-XX:MetaspaceSize 元空间初始大小 -XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize 元空间最大值 -XX:MaxMetaspaceSize=512m
-Xss 线程栈大小 -Xss1m

2. GC相关参数

通用GC参数

参数 说明 示例
-XX:+UseG1GC 启用G1垃圾回收器
-XX:+UseConcMarkSweepGC 启用CMS垃圾回收器
-XX:+PrintGCDetails 打印GC详细信息
-Xloggc: 输出GC日志到文件 -Xloggc:/path/to/gc.log

G1专用参数

参数 说明 示例
-XX:MaxGCPauseMillis 目标最大GC停顿时间 -XX:MaxGCPauseMillis=200
-XX:G1HeapRegionSize 设置Region大小 -XX:G1HeapRegionSize=16m

3. 性能监控参数

参数 说明 示例
-XX:+HeapDumpOnOutOfMemoryError OOM时生成堆转储
-XX:HeapDumpPath= 堆转储文件路径 -XX:HeapDumpPath=/tmp/heapdump.hprof
-XX:+PrintFlagsFinal 打印所有JVM参数最终值
-XX:+FlightRecorder 启用Java Flight Recorder

4. 调试参数

参数 说明 示例
-XX:+PrintCommandLineFlags 打印JVM启动参数
-XX:+TraceClassLoading 跟踪类加载过程
-XX:+ShowCodeDetailsInExceptionMessages 异常中显示更多细节

5. 常用组合配置

Web服务推荐配置

java -Xms4g -Xmx4g -Xmn2g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/tmp \
-jar app.jar

低延迟系统配置

java -Xms8g -Xmx8g \
-XX:+UseZGC \
-XX:+UnlockExperimentalVMOptions \
-XX:ZAllocationSpikeTolerance=5 \
-jar app.jar

6. 参数查看工具

  1. 运行时查看

    jinfo -flags <pid>
    
  2. 默认值查询

    java -XX:+PrintFlagsFinal -version | grep <参数名>
    

7. 最后

  1. -Xmx-Xms建议设置相同值,避免动态调整
  2. 生产环境务必配置-XX:+HeapDumpOnOutOfMemoryError

公众号免费获取学习资料

你可能感兴趣的:(jvm)