「这是我参与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:SurvivorRatio | Survivor区和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:MaxGCPauseMills | G1最大停顿时间 | 暂停时间不能太小,太小会导致G1跟不上垃圾产生的速度,最终退化成Full GC.所以对正么参数的调优是一个持续的过程,逐步调整到最佳状态 |
-XX:ConcGCThreads | 并发垃圾收集器使用的线程数量 | |
-XX:G1MixedGCLiveThresholdPercent | 混合垃圾回收周期中要包括的旧区域设置占用率阈值 | 默认65% |
-XX:G1MixedGCCountTarget | G1回收分区时最大混合式GC周期数 | 默认值为8 |
-XX:G1OldCSetRegionThresholdPercent | 设置混合垃圾回收期间要回收的最大旧区域数 | 默认值为10 |
跋尾
本篇内容就到这里了~ 我是Zeus👩🏻🚀来自一个互联网底层组装员,下一篇再见! 📖