jvm gc调优

 

个人理解:jvm调优其实就是调整垃圾回收的机制
1.添加参数-XX:+UseG1GC


2.调整内存-XX:MetaspaceSize=100M -Xms300M -Xmx300M


3.调整gc回收的停顿时间,也不能设置得太短,因为垃圾回收也会占用资源,一直占用cpu资源,反而会导致程序更卡更慢
-XX:MaxGCPauseMillis=20 设置最大GC停顿时间指标


4.启动并发GC时堆内存占用比
-XX:InitiatingHeapOccupancyPercent=45
触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比例。值为 0 则表示“一直执行GC循环)'. 默认值为 45 (例如, 全部的 45% 或者使用了45%).

 

最佳建议

不要手动设置新生代和老年代的大小,只要设置整个堆的大小

 

不断调优暂停时间目标

一般情况下这个值设置到100ms或者200ms都是可以的(不同情况下会不一样),但如果设置成50ms就不太合理。暂停时间设置的太短,就会导致出现G1跟不上垃圾产生的速度。最终退化成Full GC。所以对这个参数的调优是一个持续的过程,逐步调整到最佳状态。暂停时间只是一个目标,并不能总是得到满足。

 

使用-XX:ConcGCThreads=n来增加标记线程的数量

 

jvm gc调优