-
Young GC也叫Minor GC,从年轻代空间(eden和survivor区)回收的内存区域,在这个区的对象生命周期短,GC频率搞,回收速度快,一般采用复制回收算法。
新创建的对象会在年轻代eden区域中进行分配,因此如果eden区内存满了就会触发Young GC。
-
FullGC也称MajorGC:清理整个堆空间,包括年轻代、老年代和方法区(永久代、元空间)的垃圾收集,FullGC一般耗时长。因此,我们要尽量避免发生FullGC。
FullGC触发的情形:
- 手动调用System.gc()方法时(慎用)
- Minor GC后,如果大量对象仍然存活,导致两块survivor区域空间不足,就会转移到老年代,如果老年代空间也不够用了就会触发Full GC
- 老年代最大连续可用空间<历代老年代对象的平均大小
- 达到了收集器设置的阈值,比如CMS老年代 触发FullGC的使用比例是92%
- 当元空间(java8)/永久代(java7)不足时
网友评论