Young GC/Minor GC
触发时机:Eden区满时触发,Survivor区满不会触发,但Minor GC会引起Survivor区垃圾回收
GC目标:Eden区和Survivor区
耗时:很快,STW时间短
Major GC
触发时机:老年代空间不足时,会先尝试触发Minor GC 如果空间还不足,则触发Major GC
GC目标:只有老年代,只有CMS GC会有单独收集老年代的行为
注:Mixed GC收集整个新生代和部分老年代的垃圾收集,只有G1 GC会有这种行为
耗时:慢10倍以上 STW时间长
Full GC
触发时机:1、调用System.gc()时 系统建议执行Full GC 但是不是必然执行
2、老年代空间不足,可见老年代空间不足触发的是Full GC
3、方法区空间不足
4、通过Minor GC后进入老年代的平均大小大于老年代的可用内存
5、由Eden区、s0区向s1区复制时,对象大小大于s1可用内存,则把对象转存到老年代且老年代的可用内存小于该对象大小
GC目标:整个java堆和方法区的垃圾收集
耗时:10倍以上,full GC是开发和调优中尽量避免的