这里我们把一些名词拿来给大家补充说明下,比如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,对新生代和老年代都进行回收。