垃圾回收器详细整理

新生代垃圾回收器老年代垃圾回收器
serialGCserialserial old
parallelGCparallel Scavengeparallel old
CMS GCpar NewCMS
G1

serialGC:新生代内存不足,使用serial垃圾回收器并且使用标记复制算法,对新生代进行minorGc,老年代内存不足,使用serialOld垃圾回收器并且使用标记整理算法对整个堆进行fullGc。采用单线程垃圾回收
parallelGC:新生代内存不足,使用parallel Scavenge进行垃圾回收并且使用的是标记复制算法进行minorGc,老年代内存不足,使用的是parallel old垃圾回收器基于标记整理算法进行垃圾回收。采用的是多线程垃圾回收
CMS GC: 新生代内存不足,使用的是par New 垃圾回收器基于标记复制算法进行垃圾回收。老年代内存不足,使用的是CMS垃圾回收器基于标记清除算法进行垃圾回收,如果空间碎片比较严重的时候,会基于标记整理进行回收。整个过程一直都是一种并发清除的过程,如果老年代严重不足了,就会STW,使用serial Old 垃圾回收器进行单线程垃圾回收(标记-整理算法)
G1
G1回收步骤:

  1. 新生代垃圾回收:新生代内存不足,进行新生代的垃圾回收。使用的是标记复制算法。经过一段时间垃圾回收,一些存活时间长的对象就会进入到老年代region区。对于大对象,G1有独自的humongous区用来存活大对象。(如果对象大小超过了Region区的50%则视为大对象进入大对象区)
  2. 在新生代垃圾回收过程中会同时进行初始化标记Root对象,在新生代垃圾回收结束后会进行并发标记。
  3. 混合垃圾回收:当老年代内存不足时候,就会进行新生代和老年代以及大对象区的全面回收。该阶段一旦触发,就会进入STW阶段,可以通过设置混合回收的停顿时间,为了保证这个停顿时间,JVM会从新生代、老年代、大对象H区挑选一部分进行垃圾回收,分多次进行回收。
  4. FullGC:无论是新生代还是老年代的垃圾回收都是基于复制算法,需要将Resion区的存活对象复制到另一个Region区,如果没有空闲的Region区了就会触发一次失败,进行FullGc,FullGc使用的是SerialOld垃圾回收器基于标记整理算法,且是单线程,停顿时间长
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值