业务中的现象表现
运行一段时间后,频繁fullgc,2s10几次fullgc,无法对外提供服务
环境
gc日志
内存还有非常多的情况下就开始了fullgc
dump分析
只看到class loader的一直重新加载?内存指向java.security.Permission,没有其他大对象?没有搞懂重新改好了也是这样,需要再搞懂
jvm参数
1 | -Xms128m -Xmx256m -XX:ReservedCodeCacheSize=50m -XX:MetaspaceSize=96m -XX:MaxMetaspaceSize=96m -Xss256k -XX:MaxDirectMemorySize=16m |
修改
怀疑是-XX:ReservedCodeCacheSize=50m导致Meta不生效,导致重新加载fullgc?
修改为jvm参数,后好使了
1 | -Xms128m -Xmx256m -XX:PermSize=128m -XX:-UseGCOverheadLimit -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=80 |
需要再研究,怎么来指向这个问题。
另外火焰图必不可少