网易首页 > 网易号 > 正文 申请入驻

Java8 的 G1相对于之前的 CMS 有什么特别的呢?

0
分享至

CMS

CMS 垃圾回收器,全称 Concurrent Mark Sweep 并发标记-清除,从名字上面我们也可以看出这个垃圾回收器是基于标记清除算法实现的。首先"并发"表示 GC 线程可以和用户线程并发执行,同时既然是标记-清除算法,说明这个垃圾回收器会产生很多碎片,这是标记-清除算法的缺点。同时 CMS 是作用于老年代的,老年代的垃圾回收频率相对年轻代会低一点。

CMS 的垃圾回收有四个过程

  1. 初始标记:
  2. 并发标记:
  3. 重新标记:
  4. 并发清除:

初始标记的时候是一个 STW (stop the world)的过程,所有的用户线程都会停止,这个时候只是标记一下 GC Roots 能直接达到的对象,由于只是标记一层所以整个速度相对会比较快。

并发标记是一个 GC Roots 扫描的过程,会扫描整个链路标记可以回收的对象;由于整个的链路会比较长,所以相对会耗时久一点,不过由于这个过程是并发的,所以对用户线程运行是没有影响的。

重新标记顾名思义是一个再次标记的过程,同时也是会 STW,之所以会有这个重新标记的过程,是因为在上一步并发标记的过程中,用户线程依旧在运行,所以对象的引用关系会发生变化同时在运行的时候也会产生新的垃圾。这里只会标记在上一步有发生变化的对象,虽然会 STW 不过速度也较快。

并发清除是最后一个阶段,这个阶段由于需要清除之前扫描的所有垃圾对象,所以会相对比较耗时,不过这个阶段是可以并发进行的所以对用户线程的运行不会有影响。

经过上面的四个过程就完成了一次完整的 GC,前面我们提到整个 CMS 垃圾回收器是基于标记-清除算法的,先通过三个过程标记出需要清理的对象,然后再进行清理。整个过程中初始标记和重新标记会触发 STW,其他两个阶段是并发进行的。标记-清除算法会产生内存碎片,所以不适合需要频繁回收的年轻代,所以只适合老年代。产生碎片是 CMS 的缺点,并发是 CMS 的优点,毕竟任何一个收集器都会有优缺点。

G1

前面我们聊完了 CMS,接下来我们聊一下 G1G1 全称 Garbage First,在讲 G1 垃圾回收器的细节之前,我们首先要知道的是 G1 对整个堆的空间做了重新的定义。G1 中的老年代和年轻代已经不再是物理隔离的了,而是逻辑隔离。在 G1 中整个堆空间被分成了一个个相同大小的 Region 块,多个 Region 块在逻辑上组成了年轻代和老年代。

这样做的目的是因为在进行垃圾回收的时候不需要进行整个堆空间的扫描,同时可以根据指定停顿时间来进行垃圾回收。G1 会将每个 Region 的回收成本进行量化,从而达到一个成本控制,可以在限定的停顿时间内完成回收,这是 G1 的最大的特点。

G1 回收也分为四个过程:

  1. 初始标记:初始标记与 CMS 也是只扫描 GC Roots 直达的对象,这阶段同样也要 STW,不过时间也很短;
  2. 并发标记:从 GC Roots 开始堆中对象进行可达性分析,找出存活的对象,这个阶段耗时较长,但是可以与用户程序并发执行;
  3. 最终标记:最终标记和 CMS 的重新标记的思路一直,也是为了修正并发标记期间由于用户程序并发运行而导致标记产生变动的那一部分对象,不过不同的是 G1 会将这段时间对象变化记录在线程 Remembered Set Logs 里面,最终标记阶段需要把 Remembered Set Logs 的数据合并到 Remembered Set 中,这个阶段需要停顿线程,不过是可并行执行;
  4. 筛选回收:最后一步筛选回收是 G1CMS 最大的不同之处,G1 首先会对各个需要回收的 Region 代价进行量化和排序,在结合用户所期望的 GC 停顿时间来制定回收计划,通过-XX:MaxGCPauseMillis 参数来指定期望的回收时间。这个阶段也可以做到与用户程序一起并发执行,但是因为只回收一部分 Region,时间是用户可控制的,而且停顿用户线程将大幅提高收集效率。

上面提到了一个 Remembered Set 记忆集,是用来记录对象引用的,在并发标记的时候有对象引用发生变更的时候会记录到这里,等到最终标记的时候进行修正。整体上来看 G1 采用的是标记-整理的算法来进行垃圾回收,也不会像 CMS 那样会产生内容碎片,所以 G1 同时可以进行年轻代和老年代的垃圾回收,相比 CMS 会更灵活一点,而且也因为 G1 将内存划分成 Region 了,也不会造成复制算法带来的空间浪费的问题。

总结

首先CMS 和 G1 都是并发和分代的垃圾回收器,并且都是低延迟的;CMS 是基于标记-清除算法的,只适合在年轻代使用,不可预测停顿时间,同时年轻代和老年代是物理隔离的。G1 是基于标记-整理的高吞吐,可预测停顿时间的垃圾回收器,可以同时使用在年轻代和老年代,同时年轻代和老年代是逻辑隔离的。

特点G1CMS算法标记-整理标记-清除年轻代和老年代隔离方式逻辑隔离物理隔离停顿时间可预测行是否并发和分代支持支持吞吐量高低使用场景年轻代,老年代年轻代低延时是是
转自公众号:Java极客技术

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
温布利又成多特伤心地!11年两连亚,27年决赛四连败,延续5魔咒

温布利又成多特伤心地!11年两连亚,27年决赛四连败,延续5魔咒

奥拜尔
2024-06-02 05:00:50
上海楼市全军覆没,上海楼市陆家嘴从109000元降至107000元

上海楼市全军覆没,上海楼市陆家嘴从109000元降至107000元

有事问彭叔
2024-06-01 14:11:22
贝林汉姆欧冠圆梦感激父母 多特球迷也会自豪 伤心的是利物浦

贝林汉姆欧冠圆梦感激父母 多特球迷也会自豪 伤心的是利物浦

敖铭
2024-06-02 05:48:17
朱婷的采访很精彩,但蔡斌比她更精彩,让球员自己上可能都比他强

朱婷的采访很精彩,但蔡斌比她更精彩,让球员自己上可能都比他强

嘴炮体坛
2024-06-01 10:48:05
白玉兰奖成了“照妖镜”,46岁王阳提名后,破防人算是照明白了

白玉兰奖成了“照妖镜”,46岁王阳提名后,破防人算是照明白了

陈述影视
2024-05-31 20:56:27
经营裸体度假村20年后,曾最爱美的她彻底杀死了容貌焦虑!

经营裸体度假村20年后,曾最爱美的她彻底杀死了容貌焦虑!

新欧洲
2024-05-31 20:07:42
乒乓球重庆赛:6月2日赛程公布!国乒3人抗日;王曼昱大战陈幸同

乒乓球重庆赛:6月2日赛程公布!国乒3人抗日;王曼昱大战陈幸同

小豆豆赛事
2024-06-02 04:27:18
四川发现3米高的“狯狫”,直立行走爱吃猪油,一跃翻过5米深沟

四川发现3米高的“狯狫”,直立行走爱吃猪油,一跃翻过5米深沟

可乐88
2024-05-31 16:00:12
美传爆炸性消息,普京有大麻烦,捷克外长:事态紧急,没中国不行

美传爆炸性消息,普京有大麻烦,捷克外长:事态紧急,没中国不行

千里持剑
2024-05-31 14:39:29
她都37岁了,但是看着很有少女感啊!

她都37岁了,但是看着很有少女感啊!

小米虫侃人物
2024-06-01 09:26:49
能活到100岁的老人,大部分都是在60岁时,戒掉了4件事

能活到100岁的老人,大部分都是在60岁时,戒掉了4件事

39健康网
2024-05-31 21:00:02
孙楠的口碑为什么会这么差?

孙楠的口碑为什么会这么差?

麻辣婊
2024-05-31 01:52:32
放假通知!北京大中小学暑假时间公布,孩子们:假期好长

放假通知!北京大中小学暑假时间公布,孩子们:假期好长

书中自有颜如玉
2024-06-01 18:00:25
鲍尔默给哈登3年1亿合同:不签就交易走!自由市场报价3000万年薪

鲍尔默给哈登3年1亿合同:不签就交易走!自由市场报价3000万年薪

篮球话题团
2024-06-02 02:11:30
6号种子出局!张本智和3-1晋级8强,无视裁判催促,疑似打心理战

6号种子出局!张本智和3-1晋级8强,无视裁判催促,疑似打心理战

环太平洋老正太
2024-06-01 12:21:29
河北突发砍杀事件,三人伤亡嫌犯落网,视频曝光,太吓人了

河北突发砍杀事件,三人伤亡嫌犯落网,视频曝光,太吓人了

小肖文
2024-06-01 23:24:32
山东特斯拉撞人事件:1死2伤,知情人透露细节,评论区沦陷!

山东特斯拉撞人事件:1死2伤,知情人透露细节,评论区沦陷!

皖声微言
2024-06-01 10:54:59
2024年养老金调整,机关事业退休老人和中人,上调方式一样吗?

2024年养老金调整,机关事业退休老人和中人,上调方式一样吗?

碎月导师
2024-05-31 06:30:02
女单大爆冷!乒坛头号种子2:3被淘汰,无缘女单8强,日本选手3:2

女单大爆冷!乒坛头号种子2:3被淘汰,无缘女单8强,日本选手3:2

国乒二三事
2024-06-01 10:16:48
离谱,裁判将对手出界球误判为压线,郑钦文激动争论但无果

离谱,裁判将对手出界球误判为压线,郑钦文激动争论但无果

懂球帝
2024-06-01 18:32:50
2024-06-02 06:02:44
中国尊下的打工仔
中国尊下的打工仔
不定时更新Java知识
26文章数 167关注度
往期回顾 全部

科技要闻

余承东:不卷价格!雷军:将双班制生产!

头条要闻

小伙投资300万在瑞典开拉面馆生意火爆 1碗面卖100元

头条要闻

小伙投资300万在瑞典开拉面馆生意火爆 1碗面卖100元

体育要闻

女排最强2主攻合体 合砍40分打懵泰国

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

实锤!普华永道,危!

汽车要闻

吉利银河E5 Flyme Auto智能座舱首发

态度原创

亲子
家居
健康
本地
公开课

亲子要闻

爬行垫突然倒下砸向哥哥,倒地瞬间弟弟冲上去了!

家居要闻

风雅自来 中式的和谐平衡

晚餐不吃or吃七分饱,哪种更减肥?

本地新闻

食味印象|歙县限定!枇杷味儿的清甜初夏

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版