记录一次频繁FullGC,却不OutOfMemory事件

70 阅读1分钟

通过Skywalking查看JVM发现频繁FullGC,但是服务没down,也没有抛出内存溢出异常

1cbb27a1f3ba5c8b28028fe0e1cdd541.png

手动生成dump文件,并使用VisualVm分析,发现堆大小并没有很大,只有300多M

image.png

再查看gc日志,发现元数据区达到gc阈值(默认21M),从而频繁FullGC,因为java8元数据区是本地内存,且没有配置元数据区最大内存,所以元数据区大小一直在增长

image.png

最后,配置一下元数据区jvm参数

初始大小 -XX:MetaspaceSize=128M

最大大小-XX:MaxMetaspaceSize=512M

运行一段时间,未出现频繁FullGC现象