JVM CMS收集器、G1收集器

CMS收集器
CMS(Concurrent Mark Sweep) 收集器是一种以获取最短回收停顿时间为目标的收集器。基于 标记-清除 算法实现的,它大致分为4个步骤:
1、初始标记,标记GC Roots能直接关联到的对象
2、并发标记,根据GC Roots根节点搜索的过程,对堆中的对象进行可达性分析,找出存活的对象
3、重新标记,修正并发标记期间因用户程序继续运作而导致标记变动的对象的标记记录
4、并发清除,清除未被标记上的对象
初始标记和重新标记时需要 Stop The World,执行时间比并发标记和并发清除时耗时少,所以从总体上来说,CMS收集器是与用户线程一起并发执行的。

  • 优点:并发收集、低停顿
  • 缺点:
    1、对CPU资源敏感,在并发阶段会占用一部分线程而导致程序变慢。
    2、浮动垃圾,在并发清除阶段,用户线程也还在运行,会有新的垃圾产生。
    3、内存碎片化,CMS收集器是基于 标记-清除 算法实现的

G1收集器
Garbage-First,是一款面向服务端应用的垃圾收集器,它将整个Java堆分为多个大小相等的独立区域Region,保留新生代和老年代的概念。G1跟踪各个Region里面的垃圾堆积的价值大小,维护一个优先列表,每次根据允许的收集时间,优化回收价值最大的Region。
G1收集器的运作大致分为4个步骤:
1、初始标记,与CMS相似
2、并发标记,与CMS相似
3、最终标记,修正并发标记期间因用户程序继续运作而导致标记变动的对象的标记记录,把对象的变化记录合并到Remembered Set中
4、筛选回收,先对各个Regoin的回收价值和成本进行排序,然后根据用户期望的GC停顿时间来进行回收计划
初始标记、最终标记需要停顿用户线程,可并行执行

与其他GC收集器相比,G1具备如下特点:
1、并行与并发,充分利用多CPU、多核环境下的硬件优势, 缩短Stop The World时间
2、分代收集
3、空间整合,复制算法+标记整理法
4、可预测的停顿,指定GC停顿时间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值