(1)Minor GC / YongGC
这两个名词都是指的新生代或年轻代,从字面意思也能理解。那么新生代GC,我们就可以说是YongGC或MinorGC,两者都可以。从年轻代空间(eden和survivor区)回收的内存区域,在这个区的对象生命周期短,GC频率搞,回收速度快,一般采用复制回收算法。
(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。
FullGC一般耗时长。因此,我们要尽量避免发生FullGC。
FullGC触发的情形:
手动调用System.gc()方法时(慎用)
Minor GC后,如果大量对象仍然存活,导致两块survivor区域空间不足,就会转移到老年代,如果老年代空间也不够用了就会触发Full GC
老年代最大连续可用空间<历代老年代对象的平均大小
达到了收集器设置的阈值,比如CMS老年代 触发FullGC的使用比例是92%
当元空间(java8)/永久代(java7)不足时
(4)Major GC
很多书籍或博客里有些说 Major GC == Old GC, 也有说 == Full GC,这个词目前用的很混淆,所以个人建议尽量不提这个词,如果真有面试中面试官说到这个词,那么可以向他明确一下是指的年老代回收还是整堆回收。
(5)Mixed GC
Mixed GC是G1中特有的概念,当老年代内存占据到了45%就户触发Mixed GC,对新生代和老年代都进行回收。
参考图
https://it.cha138.com/shida/show-86368.html