相同点:

1.CMS和G1均有“初始标记”阶段,两者初始标记的方案一致(均会stw)

2.CMS和G1均有“并发标记”阶段,两者并发标记阶段均使用三色标记法

3.均使用SerialGC进行兜底(当对象分配不下会触发兜底策略)

4.均包含分代思想

5.G1发生MixedGC和CMS的垃圾回收流程类似

6.均会发生内存伪共享问题

背景:如果不同线程对对象的引用的更新操作,恰好位于同一个64kb区域(cpu的缓存行大小为128字节,1个卡表项1字节,1个卡表页512字节。即128 * 1 * 512)这将导致同事更新卡表的同一个缓存行,从而造成缓存行的写回,无效同步,间接影响程序性能

解决方案:写屏障添加条件,先检查卡表标记,只有卡表项未被标记过脏卡,才将状态改为dirty

7.均使用卡表来解决跨代引用问题

不同点:

1.设计初衷不一致。CMS设计的初衷:最短的STW

2.“并发阶段”针对漏标的情况采用不同的策略。CMS 目前采用了 Incremental Update(增量) 通过 post write-barrier(后置写屏障) 来实现; G1 则采用了 SATB(关注删除引用) 通过 pre write-barrier(前置写屏障) 来实现。(该屏障和内存屏障不是同一概念,此处的屏障是GC独有的)

3.分代的差异性:G1逻辑分代,物理不分代,CMS物理分代(也算存在逻辑分代,卡表逻辑上将老年代分成一个个512的卡页);CMS老年代垃圾回收器

4.G1包含RSet存储其它region中对象到本region的引用(每次给对象赋引用时,需要消耗额外的资源记录到RSet中)

CMS和G1的差异性相关推荐

  1. JVM从入门到精通(十):垃圾回收算法串讲:CMS,G1,三色标记算法

    CMS 并发回收,工作线程和GC线程同时进行,暂停时间短 老年代 分为 四个阶段: 初始标记:需要STW,因为初始的垃圾并不多,因此耗费的时间不长 并发标记:垃圾回收线程和工作线程同时执行.一边产生垃 ...

  2. 【重难点】【JVM 03】CMS、G1、ZGC

    [重难点][JVM 03]CMS.G1.ZGC 文章目录 [重难点][JVM 03]CMS.G1.ZGC 一.CMS 1.介绍 2.优点 3.缺点 二.G1 1.介绍 2.优势 3.应用场景 4.Re ...

  3. 垃圾回收器——CMS与G1

    垃圾回收器--CMS与G1 查看JVM所有的参数及默认值 什么是垃圾回收,为什么要有垃圾回收 根可达中的根 安全点与安全区间 内存分代划分,为什么要有内存分代划分 jstat CMS垃圾回收器 CMS ...

  4. 弄明白CMS和G1,就靠这一篇了

    在开始介绍CMS和G1前,我们可以剧透几点: 根据不同分代的特点,收集器可能不同.有些收集器可以同时用于新生代和老年代,而有些时候,则需要分别为新生代或老年代选用合适的收集器.一般来说,新生代收集器的 ...

  5. 别总说CMS、G1,该聊聊ZGC了

    在开始介绍前,我们可以剧透几点: 根据不同分代的特点,收集器可能不同.有些收集器可以同时用于新生代和老年代,而有些时候,则需要分别为新生代或老年代选用合适的收集器.一般来说,新生代收集器的收集频率较高 ...

  6. CMS、G1垃圾收集器详解

    CMS垃圾收集器 基本上只能用在老年代,很长一段时间是ParNew(新生代)搭配CMS(老年代)来使用的. 收集过程大概会分为如下4个过程: 1.初始标记: 暂停所有的其他线程,并记录下gc root ...

  7. java g1 详解_JAVA垃圾收集算法总结以及CMS、G1算法详解

    前段时间由于工作原因一直很忙,上周项目验收后时间终于空闲下来,博客也有好几个月没有更新了,趁着还有几天放假,借这个机会写点东西:网上也有很多人写过Java垃圾收集器,特别现在主流比较火的CMS和G1算 ...

  8. cms 和 g1的主要区别

    cms和g1的主要区别 1.cms是内存分布式分代连续的,也就是新生代一块连续的区间,年老代一块连续的区间,而g1是把堆分成了2048个region,每个区域region可以作为新生代也可以作为年老代 ...

  9. 双/三色标记法的垃圾回收(GC)原理解析和缺陷解决方案(Go,Lua以及jvm的CMS和G1垃圾回收器中使用的回收算法)

    标记-清除算法 go和lua虚拟机以及jvm的CMS和G1垃圾回收器的回收算法的思想均来自于标记-清除算法(Mark-Sweep),它们的gc有重要的两部分: 1.从根节点遍历所有对象,如果可达到,则 ...

最新文章

  1. 两院院士评选2020年中国、世界十大科技进展揭晓,「机器学习模拟上亿原子」等入选 | AI日报...
  2. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
  3. java 微信请求_Java web微信请求拦截器(微信公众号开发)
  4. SDO_Geometry 相关学习
  5. 自定义alert提示框
  6. vue ref 属性
  7. x86_64-linux-gnu/libgdk-x11-2.0.so: error adding symbols: DSO missing from command line
  8. 使用burp对Tomcat 弱密码爆破
  9. linux使用USB转串口驱动设置
  10. Linux16T以上硬盘分区,centos 2T以上硬盘 或者大于超过16T分区和格式化
  11. Spring Cloud源码阅读(一)
  12. 规格书搜索网站分享和体验
  13. ICPR MTWI 2018 挑战赛二:网络图像的文本检测
  14. java 堆内存结构_基于JDK1.8的JVM 内存结构【JVM篇三】
  15. 魔法密文 Writeup| DASCTF Oct X 吉林工师
  16. sonicwall防火墙快速上网配置
  17. 食品行业MES解决方案
  18. js室内地图开发_使用JS+Three.js+Echart开发商场室内地图客流信息统计功能
  19. 使用JS代码禁止某些地区用户访问网站
  20. 计算机管理工具怎么设置,日程安排管理工具敬业签电脑版如何更改默认标签分类?...

热门文章

  1. 如何正确设置显示器的刷新率
  2. 手撕Java源码系列之Map接口
  3. OSChina 周四乱弹 ——霍金!你要真挑起来星球大战,放学你等着!
  4. 企业数字化转型高级解决方案专家柳京活:元宇宙背景下的大数据之路 l 华坤道威专访
  5. 年薪200万!四川大学学生入选华为天才少年计划!
  6. OWASP API安全Top 10
  7. batch 13.0 批处理 attrib
  8. 谈谈光纤跳线的选购要点【华光昱能知识与您分享】
  9. PTA 补充题库 7-18 冒泡法排序
  10. 走进计算机科学与技术专业,一期一会丨与南国相会,带你走进计算机科学与技术专业...