Minor GC安全检查

Minor GC安全检查
JVM堆内存分为:
年轻代和老年代

Minor GC:
发生在年轻代,频率较高速度较快
多数Java对象优先在Eden区分配空间,如果Eden空间不足,就会执行Minor GC。并把所有存活下来的对象转移到其中一个survivor区。
Minor GC同样会检查存活下来的对象,并把它们转移到另一个survivor区。总共有两个survivor区,要保证总会有一个survivor区是空的,便于下次检查之后将存活下来的对象移到空的survivor,然后对对象原来的survivor进行垃圾回收。

Major GC:
清理老年代
MajorGC 的速度一般会比 Minor GC 慢 10倍以上。

Full GC:
是清理整个堆空间–包括年轻代和老年代

Minor GC触发条件

检查老年代的可用空间是否大于年轻代的对象总和

1.若大于则直接执行minorGC(是一次安全的)。

2.若不大于且不允许承担失败,则开启直接FullGC,让老年代腾出更多的空间

3.若不大于且允许承担失败,则计算历次晋升到老年的对象的平均占用内存大小是否大于老年代的最大连续内存空间。
如果小于直接执行FullGC,如果大于,就进行Minor GC。