Minor GC && MixedGC && Full GC

注意:本章节针对JDK1.8

Minor GC

Young gc,指的是发生在新生代(年轻代)的垃圾收集动作,Minor GC比较频繁,回收速度一般也比较快。Minor GC的流程如下:

  1. 应用程序启动运行导致Eden区满了触发minor gc。根据GC Root找出Eden所有的非垃圾对象,将这些对象从Eden区挪到S区的其中一块内存中(我们这里假设挪到S0),然后清空Eden区;(注意:一个对象每经历过一次GC后没有被回收的,分代年龄都会+1,分代年龄值存放在对象头中)

  2. 程序运行一段时间后Eden区又满了,再次出发minor gc。此时将Eden区和S0区的非垃圾对象挪到S1,并清空Eden区和S0区,并且分代年龄+1。

  3. 程序运行一段时间后Eden区又满了,再次出发minor gc。此时将Eden区和S1区的非垃圾对象挪到S0,并清空Eden区和S1区,并且分代年龄+1。

  4. 如此反复步骤2、步骤3,直到存活对象的分代年龄到达15时,该存活对象就会被挪进老年代。如果老年代满了就会触发full gc

Full GC

full gc也被称为major gc。一般回收老年代、年轻代及方法区的垃圾对象。full gc的回收速度一般会比minor gc慢10倍以上。

当老年代满了或者达到其阈值就会触发full gc,full gc的过程和minor gc过程类似,但是full gc回收的是整个堆和方法区。

当full gc后老年代还是满的,或者是full gc后的可用内存放不下 gc后挪进老年代的非垃圾对象,这是就会触发OOM

MixedGC

主要针对G1垃圾收集器,mixedGC会回收所有的年轻代和部分老年代。

STW

Stop-The_World,在垃圾收集器执行垃圾收集算法时,java应用程序中除了垃圾收集帮助器外的的其他所有线程将都被挂起。无论是minor gc还是full gc都会触发STW。

STW存在的目的就是为了防止在GC过程中因应用程序运行产生的垃圾对象不会被标记回收。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值