前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文带你搞明白深入解析java虚拟机垃圾回收器究竟是什么鬼

一文带你搞明白深入解析java虚拟机垃圾回收器究竟是什么鬼

作者头像
愿天堂没有BUG
发布2022-10-31 11:27:12
3030
发布2022-10-31 11:27:12
举报

垃圾回收器

G1 GC全称是Garbage First Garbage Collector,即垃圾优先的垃圾回收器,可以使用-XX:+UseG1GC开启。G1 GC(以下简称G1)抛弃了既有堆模型,将整个堆划分为一些大小固定的内存块(Region),如图10-11所示。

图10-11 基于Region的堆划分

G1没有抛弃弱分代假说,如图10-11所示,每个Region仍然包含代纪,YGC和Mixed GC(混合回收)会选择合适的Region,然后只回收这一部分Region。G1的具体细节将在第11章详细介绍,本节只做简单讨论。

混合回收

Mixed GC是G1独有的回收策略,分为全局并发标记和对象复制两个部分:全局并发标记使用G1ConcurrentMarkThread在后台不定期运行,试图标记存活对象并找出收益较高的Region,接下来由YGC选择这些收益较高的Region并对它们使用复制算法,将其中的存活对象复制到Survivor Region,然后清空原本的Region。

复制算法可以有效地解决类似CMS GC老年代的碎片化问题,同时由于全局并发标记选择一部分Region,这使得用户可以指定一个GC最大暂停时间作为目标,由G1根据历史数据和选择的Region回收垃圾,努力达到用户设置的目标,也即让用户在一定程度上控制STW时间。完整的G1周期如图10-12所示。

图10-12 G1 GC

除了Young GC和Mixed GC,G1也有Full GC。回收速度跟不上老年代回收速度,或者无法容纳晋升对象等都可能导致Full GC。G1的FullGC与其他垃圾回收器的Full GC一样都使用标记整理算法,整个Full GC是一个完全STW的过程。

另外从图10-12中不难看出,在混合回收中,复制阶段是全局STW的,它是一个相当耗时的过程,如果G1跟不上用户设置的目标,反而容易引发Full GC。对于这些问题,新一代低停顿并发垃圾回收器Shenandoah GC和ZGC交出了新的答卷。

本文给大家讲解的内容是深入解析java虚拟机:垃圾回收,垃圾优先的垃圾回收器

  1. 下篇文章给大家讲解的是深入解析java虚拟机:垃圾回收,Shenandoah GC及并发垃圾 回收器;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 愿天堂没有BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 垃圾回收器
  • 混合回收
  • 本文给大家讲解的内容是深入解析java虚拟机:垃圾回收,垃圾优先的垃圾回收器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档