Minor GC
Minor GC:当Eden区所剩空间,不满足分配需求时,就会触发Minor GC。
Full GC
当进行Minor GC时,会预测老年代能否承受得住新生代晋升的空间,预测的行为是对比当前老年代所剩空间大小和以往Minor GC平均晋升空间大小或者对比当前老年代所剩空间大小和年轻代存活对象总空间(二者是或的关系,成立一个即可),大于的话,预测是可以通过的,就只进行一次Minor GC。小于的话,预测是无法通过的,就要进行一次Full GC,对整个堆进行一次回收(其中也会包括对Eden、Survivor区的回收),当然我理解,本次Minor GC也就被Full GC代替。
以上只是预测,实际情况还可能出现预测大于,实际小于的情况,这种情况下就会出现【担保失败】的情况,还会引发一次Full GC。
永久代(或者可是说是方法区的实现)满了,也会触发full gc
对比可以看出,从JDK7以后,就不再使用 younger_handles_promotion_failure 变量,并且逻辑默认是打开的。
CMS GC
其实取这个名字不是很合适,只是为了突出是CMS的GC。因为CMS是老年代回收器,所以对应的GC应该是Old GC。CMS GC的监控条件是老年代的使用率,对应的配置是
-XX:CMSInitiatingOccupancyFraction
Mixed GC
G1回收器独有的回收方式
-XX:InitiatingHeapOccupancyPercent
参考