MinorgcVsMajorgcVsFullgc

编程

Minor Gc: 新生代的GC。Eden区满就会触发

清除年轻代。速度快

疑问:suvivor from区满会触发吗?也就是在进行Minor Gc,Eden存活内存复制到suvivor from并且不够空间的情况。

答:不会。当时已经在Minor Gc过程中;因为这种情况不会。如果不够,就对suvivor from进行回收,存活部分复制到suvivor to。并且交换suvivorsuvivor to永远是空的

  1. 当JVM无法为新对象分配空间时,(Eden空间满了)就会触发Minor gc

Major GC

老生代的GC

Full GC

整个堆空间的GC。包括新生代与老生代

空间安全担保

Minor GC前,

  1. 检查老年代中最大连续可用空间是否大于年轻代所有对象总空间。

  • 是:那么Minor GC确保是安全的。
  • 否:查看HandlePromotionFalure是否允许担保失败(JDK1.6 uodate 24忽略这个参数)。

    • 不允许:进行Full GC
    • 允许:检查老年代中最大连续可用空间是否大于历次晋级老年代对象平均大小

      • 否:进行Full GC
      • 是:进行冒险的Minor GC。如果担保失败再进行 Full GC

进行这样判断主要是为了,尽量少的Full GC

参考:https://dzone.com/articles/minor-gc-vs-major-gc-vs-full

以上是 MinorgcVsMajorgcVsFullgc 的全部内容, 来源链接: utcz.com/z/515593.html

回到顶部