27-YongGC、MinorGC、 Major GC、FullGC傻傻分不清

563 阅读2分钟

这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战

今天穿插一篇特别说明篇,有些同学在问YongGC、MinorGC、MajorGC以及Old GC、Full GC这么多名词到底谁是谁?搞晕了!本篇文章特别说明下

这里我们把一些名词拿来给大家补充说明下,比如MinorGC 、YongGC、Full GC、OldGC、Major GC、Mixed GC,可能每个人在说的时候都有点混淆和模糊怎么有这么多词呢?到底哪个代表的是新生代、老年代?

这次名词其实在业内并没有一个统一的标准和定义,以及在一些书中也是不同,面试的时候如果不说清楚可能跟面试官的理解也会有差别,因此我们一起说明下:

(1)Minor GC / YongGC

这两个名词都是指的新生代或年轻代,从字面意思也能理解。那么新生代GC,我们就可以说是YongGC或MinorGC,两者都可以。

(2)老年代GC,Old GC?

之前我们说老年代GC 一直都说用的Full GC,没有提过  Old GC ,当然如果要说单独说老年代GC ,那么用Old GC是比较合适的。后续我们提到老年代GC 也都用 Old GC来。(当然如果用Full GC其实也没有问题,一般来讲触发到Old GC都会要么前要么后顺带一次Minor GC,所以我们一般也就直接称为Full GC)

(3)Full GC

首先Full GC是指的针对 新生代、老年代、永久代的全体内存空间的垃圾回收,所以叫做 Full GC。

(4)Major GC

很多书籍或博客里有些说 Major GC == Old GC, 也有说 == Full GC,这个词目前用的很混淆,所以个人建议尽量不提这个词,如果真有面试中面试官说到这个词,那么可以向他明确一下是指的年老代回收还是整堆回收。

(5)Mixed GC

Mixed GC是G1中特有的概念,当老年代内存占据到了45%就户触发Mixed GC,对新生代和老年代都进行回收。