jvm 三种gc类型对比

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是开发和调优中尽量避免的

你可能感兴趣的:(jvm 三种gc类型对比)