JVM调优实战

JVM实战调优

jvm不会开启记录GC日志,会影响性能,调优之后,就会关掉GC日志

JVM调优主要就是调整下面两个指标   减少FGC执行次数,减少FGC执行时间

停顿时间:垃圾收集器做垃圾回收中断应用执行的时间。-XX:MaxGCPauseMillis

吞吐量:垃圾收集的时间和总时间的占比:1/(1+n),吞吐量为1-1/(1+n)。-XX:GCTimeRatio=n

GC调优步骤:

  1.打印GC日志

  -XX:+PrintGCDetails -XX:+PrintGCTimeStamps(在GC日志里面打印出详细时间戳) -XX:+PrintGCDateStamps -Xloggc:./gc.log

  打印GC日志输出到文件内

Tomcat 则直接加在JAVA_OPTS变量里

  分析日志得到关键性指标

  分析GC原因,调优JVM参数

1.Parallel Scavenge收集器

分析日志

第一次调优:设置Metaspace大小,增大元空间大小-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=64M  (gceasy推荐调整,元空间大小可以设置的大一些)

第二次调优:增大年轻代动态扩容增量,默认是20%,可以减少young gc:-XX:YoungGenerationSizeIncrement=30

2.配置CMS收集器

-XX:+UseConcMarkSweepGC

3.配置G1收集器

-XX:+UseG1GC

-XX:InitiatingHeapOccupancyPercen:老年代占用空间超过整堆比IHOP阈值(默认45%),超过则执行混合收集

调优:添加吞吐量和停顿时间参数:-XX:GCTimeRatio=99 -XX:MaxGCPauseMillis=10

使用https://gceasy.io/上传gc日志,该网站会分析日志文件,给出调优建议

GC常用参数

堆栈设置

-Xss:每个线程的栈大小

-Xms:初始堆大小,默认物理内存的1/64

-Xmx:最大堆大小,默认物理内存的1/4

-Xmn:新生代大小

-XX:NewSize:设置新生代初始大小

-XX:NewRatio:默认2表示新生代占老年代的1/2,占整个堆内存的1/3

并行收集器设置:

-XX:YoungGenerationSizeIncrement:年轻代gc后扩容比例,默认是20(%)

原文地址:https://www.cnblogs.com/zpp1234/p/13121921.html