1. 背景
偶然发现查看线上日志-Xloggc:******/gc.log下面的日志,发现线上机器存在Full GC,查找其他服务发现都会有这个问题,
基于我们系统很多垃圾回收机制都是ParalllelGC,即吞吐量优先GC方式,GC线上在处理任务时会造成系统stop the wrold暂停,而且GC
时间相对CMS等收集器而已要更长,虽然这些Full GC暂时无明显停顿,但是出于优化原则进行了一轮排查。下面是对几台线上机器的比对。
比对发现线上服务最后一次启动时间与FullGC出现时间相对吻合。
2. 问题定位
通过观察比对发现这些Full GC有几个比较明显的特点
- 每台机器都有几个Full GC ,这几个Full GC的时间间隔并不长
- 线上xmx是2g,由新生代占比3/8的比例看,Full GC产生时PSYongGen ParOldGen并无达到造成Full GC的大小
- 将日志第一次触发Full GC时间和该服务最后一次启动时间对比,发现几乎吻合
- Full GC类型属于Metadata GC Threshold(jdk