MinorgcVsMajorgcVsFullgc
Minor Gc: 新生代的GC。Eden区满就会触发
清除年轻代。速度快
疑问:suvivor from区满会触发吗?也就是在进行Minor Gc,Eden存活内存复制到suvivor from
并且不够空间的情况。
答:不会。当时已经在Minor Gc过程中;因为这种情况不会。如果不够,就对suvivor from
进行回收,存活部分复制到suvivor to
。并且交换suvivor
。suvivor to
永远是空的
- 当JVM无法为新对象分配空间时,(Eden空间满了)就会触发Minor gc
Major GC
老生代的GC
Full GC
整个堆空间的GC。包括新生代与老生代
空间安全担保
Minor GC前,
- 检查老年代中最大连续可用空间是否大于年轻代所有对象总空间。
- 是:那么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