触发fgc:
1)大对象直接进入老年代(serial/parnew),但没有足够空间;
2)System.gc();
3)minor gc之前的空间分配担保机制;
4)minor gc后的存活对象 大于survivor区域一半,剩余对象要放在老年代,但老年代没有足够空间;
5)长期存活的对象进入老年代,原本在survivor区的对象,经过一次minor gc后,年龄+1,到达最大年龄阈值,晋升到老年代,但老年代空间不足;
6)minor gc后触发对象动态年龄判断机制,把大龄对象放在老年代,但老年代空间不足;
7)方法区空间不足;
g1 触发mixgc:
老年代的堆占有率达到参数(-XX:InitiatingHeapOccupancyPercent)设定的值则触发 ;
g1 FullGC:
MixedGC,主要使用复制算法,需要把各个region中存活的对象拷贝到别的region里去,拷贝过程中如果发现没有足够的空region能够承载拷贝对象就会触发一次Full GC;