一般情况是四种,但是尤其以第一种来源最多。
老年代GC后空间仍然不足,是触发FULLGC的重要因素之一,也是最常见原因之一。
FULLGC不是CMS、G1等算法,它是一种效率很低的GC要尽可能避免。
1.新生代对象每经历依次minor gc,年龄会加一,当达到年龄阀值会直接进入老年代。阀值大小一般为15
2.Survivor空间中同一年龄的所有对象大小的总和大于survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,而无需等到年龄阀值。
3.新生代复制算法需要一个survivor区进行轮换备份,如果出现大量对象在minor gc后仍然存活的情况时,就需要老年代进行分配担保,让survivor无法容纳的对象直接进入老年代。
4.大对象直接进入老年代(数组对象、超过配置阈值的对象等)