jvm -XX:MetaspaceSize 元空间设置过小引发Full GC的优化

问题:

线上在维护的一个项目,在每次项目发布启动的时都会触发一次Full GC 。

排查:

1:结合GC日志查看发生成Full GC 都是项目刚启动就会发生一次垃圾整理回收的过程如下图:

2:结合监控系统查看指标发现MeataData使用量如下图:

检查JVM参数设置发现参数设置为:

-XX:MetaspaceSize=96m, -XX:MaxMetaspaceSize=192m:这个代表元空间初始值为:96m,最大可占用192m,

结合监控系统的指标:系统运行稳定的情况下MeataData的值在130m左右。

问题引起原因:如果元空间使用量一旦达到或者超过-XX:MetaspaceSize=96m初始值,就会进行扩容,扩容时会引起Full GC。

解决问题:

调整jvm参数为:-XX:MetaspaceSize=192m, -XX:MaxMetaspaceSize=192m

验证:

调整参数后重新发布项目,发布后,Gc日志情况如下图:

通过一段时间的监控问题得到解决。

 

posted @ 2021-02-05 11:05  songpingyi  阅读(2211)  评论(0编辑  收藏  举报