美文网首页
Minor GC、Major GC、Full GC

Minor GC、Major GC、Full GC

作者: DOB_8199 | 来源:发表于2022-04-06 22:07 被阅读0次

Young GC / Minor GC


young GC过程

几乎所有对象都在eden区域出生,当eden区域满了之后会进行YoungGC,将留下来的对象复制到to中存放,年龄+1,将Eden区域和survivor中from区域死掉的对象进行回收,再交换from和to。

Minor GC 特点

1. 触发机制:当新生代空间不足时,就会出发Minor GC,这里的新生代满指的是Eden区域满,survivor满了不会触发(每次Minor GC 会清理新生代的内存)

2. Minor GC 非常频繁,一般回收速度也比较快。

3. Minor GC 会引发 STW,暂停其它用户线程,等垃圾回收结束,用户线程才恢复运行

Major GC、 Full GC


Major GC / Old GC:只是老年代的垃圾收集,Full GC:整堆收集

1. 很多时候Major GC 会和Full GC混淆,需要具体分辨是老年代回收还是整堆回收。目前只有CMS GC会单独收集老年代的行为。

2. 目前只有G1 GC 会混合收集,即收集整个新生代以及部分老年代的垃圾收集。

Major / Full GC的特点:

1. 出现 Full GC 经常会伴随至少一次的Minor GC,但非绝对(在Parallel Scavenge收集器的收集策略中就有直接进行Full GC的策略)

2.  在老年代空间不足的时候会先尝试触发Minor GC。如果之后空间还不足,则出发Full GC

3. Full GC的速度一般会比Minor GC 慢很多,STW时间更长

4. 如果Full GC 后,内存还不足就会OOM

触发机制

1. 调用System.gc()时,系统建议执行Full GC,但不是必然执行

2. 老年代空间不足

3. 方法区空间不足

4. 由Ede区、from区向to中复制的时候,对象大小大于to的可用内存,则把该对象转存到老年代,且老年代的可用内存大小小于该对象大小

相关文章

网友评论

      本文标题:Minor GC、Major GC、Full GC

      本文链接:https://www.haomeiwen.com/subject/fsmdvltx.html