G1收集器

一、CMS收集器存在那些缺点

1、CMS收集器用于老年代,并发清除为了能够让gc线程与用户线程一起运行,采用标记清除算法。
2、标记清除算法会产生大量的碎片化的问题,如果存放一个大对象的时候,有可能会频繁的引发FullGC
3、如果触发FULLGC使用串行老年代收集器SerialIOldGC,采用单线程清理老年代堆内存垃圾。会让所有工作线程都是会触发stw,导致工作线程全部阻塞等待。
4、在以前收集器中,如果存放的对象大于的新生代内存空间,则直接晋升老年代,那么如果该对象不是很频繁使用,会非常浪费堆内存空间。

思考:CMS需要解决的问题?
  1、使用标记整理算法或标记复制算法;
  2、应该用一个专门的区域存放大对象,优先回收大对象。

二、G1收集器基本情况 

1、什么是G1收集器

  G1是一个并发收集器,它把堆内存分割为很多不相关的区域(Region) 。使用不同的Region来表示Eden、幸存者S0区,幸存者S1区,老年代等。这种方式的侧重点在于优先回收垃圾比较多的区间(Region),垃圾优先(Garbage First)故为G1。 
  因为老年代被分割成n个不同的区域,优先清理内存空间垃圾多的区域,不会清理所有老年代区域。被清理的区域也会出现stw,即所有的收集器都无法解决stw问题。 
  G1 GC有计划地避免在整个Java 堆中进行全区域的垃圾收集。G1跟踪各个Region 里面的垃圾堆积的价值大小(回收所获得的空间大小以及回收所需时间的经验值),在后台维护一个优先列表,每次根据允许的收集时间,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值