FullGC频繁问题复盘-不可达内存高

线上出现堆内存不断提高,到4个G(设置的最大内存为4个G);触发fullGC后,降低,再重新提高。

下载dump文件mat分析后,发现对内存使用只用350M,使用的内存去哪里了,mat中有一项是 Unreachable Objects,发现占用了3G多,去除基本类型后,大部分是com.alibaba.druid.stat.JdbcSqlStat使用的

查阅相关资料,是因为sqlStatMap.put(sql, sqlStat);JdbcSqlStat是被一个Map持有,大对象直接回存入老年代,所以fullGC才会触发。

解决方案:关闭druid的监控功能,注释掉下边配置

<property name="filters" value="stat" />

参考网址:https://blog.csdn.net/wilsonpeng3/article/details/70064336

原因分析:

大对象直接进入老年区[old],积累越来越多,最终触发fullGC;Youg gc清理eden和survivor,不会清理老年代;

上一篇:性能问题解析及解决方案


下一篇:JVM运行时内存划分