🤯烧点脑子使劲看--常用的JVM参数

728 阅读4分钟

「这是我参与2022首次更文挑战的第22天,活动详情查看:2022首次更文挑战

一、常用JVM参数

1.1 标准参数

-version -help -server -cp

1.2 -X参数

非标准参数,不同JDK版本可能不同

设置采用解释器/JIT编译器

  • -Xint:采用解释器执行
  • -Xcomp:采用即时编译器执行(如果即时编译器出现问题,解释器会介入)
  • -Xmixed:采用解释器和JIT编译器混合使用(默认模式)

1.3 -XX参数

使用最多的参数,非标准化参数。主要用于JVM调优和debug

  • Boolean类型

格式:-XX:[+/-] 表示启用或禁用name属性(+表示启用,-表示禁用) 如:-XX:+UseG1GC 表示启用G1垃圾收集器

  • 非Boolean类型

格式:-XX:= 表示name属性的值为value 如:-XX:MaxHeapSize=100M 表示最大堆空间为100M

1.4 其它参数

-Xms1000: 初始堆内存大小,等价于-XX:InitialHeapSize=1000 -Xmx1000:最大堆内存大小,等价于-XX:MaxHeapSize=1000 -Xss100:每个线程虚拟机栈和堆栈的大小,等价于-XX:ThreadStackSize=100

1.5 查看所有参数

java -XX:+PrintFlagsFinal -version


= 后面的值为默认值
:= 后面的值被修改后的值

1.6 设置参数的方式

  • 开发工具中设置,如idea、eclipse
  • 运行jar包时:java -XX:MaxHeapSize=100M xxx.jar
  • web容器,如tomcat,可在运行脚本中设置
  • 通过jinfo实时修改某个进程的参数。(只能修改被manageable标记的参数)

1.7 常用参数

参数含义备注
-XX:CICompiler=3最大并行编译数如果设置大于1,虽然编译速度会提高,但同样影响系统稳定性,会增加JVM奔溃的可能
-XX:InitialHeapSize=100M初始堆内存大小简写-Xms100M
-XX:MaxHeapSize=100M最大堆大小简写-Xmx100M
-XX:NewSize=20M新生代大小
-XX:MaxNewSize=50M新生代最大大小
-XX:OldSize=50M老年代大小
-XX:MetaspaceSize=50M方法区大小
-XX:MaxMetaspaceSize=50M方法区最大大小
-XX:+/-UseParallelGC是否使用ParallelGC新生代垃圾收集器,吞吐量优先
-XX:+/-UseParallelOldGC是否使用ParallelOldGC老年代代垃圾收集器,吞吐量优先
-XX:+/-UseConcMarkSweepGC是否使用CMS老年代垃圾收集器,停顿时间优先
-XX:+/-UseG1GC是否使用G1GC新生代/老年代代垃圾收集器,吞吐量优先
-XX:NewRation新生代和老年代的比值如-XX:NewRatio=4,表示新生代:老年代=1:4
-XX:SurvivorRatioSurvivor区和Eden区的比值如-XX:SurvivorRatio=8,表示Survivor区:Eden区=1:8
-XX:+/-HeapDumpOnOutOfMemoryError是否开启堆内存溢出时打印当堆OOM时,会自动生成dump文件
-XX:HeapDumpPath=heap.hprof指定堆内存溢出时打印目录表示在当前目录生成一个heap.hprof
-XX:+/-PrintGCDetails -XX:+/-PrintGCTimeStamps -XX:+/-PrintGCDateStamps -Xloggc:logs/gc.log打印GC日志可以使用不同的垃圾收集器,对比查看GC情况
-Xss128k设置每个线程的堆栈大小
-XX:MaxTenuringThreshold=6对象进入老年代的年龄阈值默认值为15
-XX:InitiatingHeapOccupancyPercent当整个堆占用超过某个百分比时,就会触发并发GC周期基于整个堆的占用率,默认值为45
-XX:G1HeapWastePercent允许整个堆内存中被浪费的空间的百分比默认值为5%。如果并发标记可回收的空间小于5%,则不会触发MixedGC
-XX:MaxGCPauseMillsG1最大停顿时间暂停时间不能太小,太小会导致G1跟不上垃圾产生的速度,最终退化成Full GC.所以对正么参数的调优是一个持续的过程,逐步调整到最佳状态
-XX:ConcGCThreads并发垃圾收集器使用的线程数量
-XX:G1MixedGCLiveThresholdPercent混合垃圾回收周期中要包括的旧区域设置占用率阈值默认65%
-XX:G1MixedGCCountTargetG1回收分区时最大混合式GC周期数默认值为8
-XX:G1OldCSetRegionThresholdPercent设置混合垃圾回收期间要回收的最大旧区域数默认值为10

跋尾

本篇内容就到这里了~ 我是Zeus👩🏻‍🚀来自一个互联网底层组装员,下一篇再见! 📖