总结JVM默认回收器-G1回收器

本文详细介绍了JVM中的G1垃圾回收器,强调其并发标记和混合回收策略。G1回收器采用Garbage-First策略,通过并发标记过程和混合回收,有效减少停顿时间,提高程序运行效率。在并发标记阶段,G1从根节点扫描可达对象,并在新生代进行GC。随后进行并发标记和重新标记,以处理并发期间产生的新垃圾。混合回收则优先处理垃圾较多的区域,确保高效利用内存。此外,文章还涵盖了串行/并行回收器的基本概念,展示了JVM内存管理的多样性和复杂性。
摘要由CSDN通过智能技术生成

目录

串行/并行回收器

G1回收器

并发标记回收

混合回收


串行/并行回收器

      这篇日志把JVM使用的G1回收器总结一下,在JVM支持的垃圾回收器中,有串行和并行回收器,串行回收器就是使用单一线程来进行垃圾回收,例如新生代串行回收器在进行垃圾回收时会停止整个Java程序的运行,因为单线程没有线程之间的切换,而且使用的是使用的复制算法,只需把可回收对象复制到其他空间,然后清除原来空间即可,整个回收过程效率较高(新生代区中因为可达的对象较少,可回收对象较多,所以使用复制算法将较少的存活对象复制后直接清除大量垃圾对象,效率高)。还有老年代串行回收器,同样是单线程执行,且垃圾回收过程中会暂停整个程序,和新生代串行回收器不同的是,老年代串行回收使用的是标记压缩法,因为老年代区中存活的对象较多,可回收对象较少,如果使用复制算法的话,需要进行大量的复制操作,所以使用标记压缩法较好,简单来说就是先从根结点开始遍历一遍所有的对象,记录它们的可达性,然后将所有可回收的对象压缩到内存的一端,进行保证内存空间连续,减少内存碎片,然后把其他垃圾对象清除。

      有串行回收肯定也有并行回收,现在的CPU基本都是双核以上,多线程同时进行垃圾回收,整个程序的运行效率通常比串行回收高,哪怕串行回收器的效率再快。并行新生代回收器和串行使用的一样是复制算法,只是使用多线程方式,执行过程还是会阻塞程序执行,并行的老年代回收器等在这里不详细总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值