MinorGC、MajorGC和FullGC之间的区别

编程

    当年轻代满时就会触发Minor GC,这里的年轻代满指的是Eden代满,Survivor满不会引发GC。   

  • 老年代 GC(Major GC / Full GC):指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Minor GC(但非绝对的,ParallelScavenge 收集器的收集策略里就有直接进行 Major GC 的策略选择过程) 。MajorGC 的速度一般会比 Minor GC 慢 10倍以上。

Full GC触发机制:
 (1)调用System.gc时,系统建议执行Full GC,但是不必然执行
(2)老年代空间不足
(3)方法区空间不足
(4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存
(5)由Eden区、survivor space1(From Space)区向survivor space2(To Space)区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小。

当永久代满时也会引发Full GC,会导致Class、Method元信息的卸载。

Minor GC和Full GC的区别:

Major GC 是清理永久代。

Full GC 是清理整个堆空间—包括年轻代和永久代

以上是 MinorGC、MajorGC和FullGC之间的区别 的全部内容, 来源链接: utcz.com/z/515982.html

回到顶部