jvm调优主要是关注吞吐量、停顿时间。
1.获取gc日志
默认使用的是ParallelGC
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:gc.log
2.CMS日志
-XX:+UseG1GC -Xloggc:cms-gc.log
3.G1日志
-XX:+UseG1GC -Xloggc:g1-gc.log
4.GC日志文件分析工具
a.GCViewer
打开gc日志进行分析
b.G1调优指南
是否选用G1垃圾收集器的判断依据
(1)50%以上的堆被存活对象占用
(2)对象分配和晋升的速度变化非常大
(3)垃圾回收时间比较长
c.jvm调优主要是不断调整各类参数,最终选择适合参数,满足最终需求
比如调整内存参数,再次获取gc日志分析
-XX:MetaspaceSize=512M -Xms512M
-Xmx512M
调整最大停顿时间
-XX:MaxGCPauseMillis=25 设置最大GC停顿时间指标
调整堆内存占用百分比
-XX:InitiatingHeapOccupancyPercent=45 G1用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的 使用比例。值为 0 则表示“一直执行GC循环)’. 默认值为 45 (例如, 全部的 45% 或者使用了45%).
5.官方建议
a.不要手动设置新生代和老年代的大小,只要设置整个堆的大小
b.不断调优暂停时间目标
c.使用-XX:ConcGCThreads=n来增加标记线程的数量
d.MixedGC调优
e.适当增加堆内存大小