专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

ZGC工作原理是什么,ZGC垃圾收集器详解

来源:小易整编  作者:小易  发布时间:2023-02-20 05:37
摘要:ZGC工作原理是什么,ZGC垃圾收集器详解ZGC全称ZGarbageCollector,在jdk11中引入的一种可扩展的低延迟垃圾收集器,在jdk15中发布稳定版。在旨在满足以下目标:...

ZGC工作原理是什么,ZGC垃圾收集器详解

ZGC全称Z Garbage Collector,在 jdk11中引入的一种可扩展的低延迟垃圾收集器,在 jdk15中发布稳定版。在旨在满足以下目标:

ZGC工作原理是什么,ZGC垃圾收集器详解

  • < 1ms 最大暂停时间(jdk < 16 是 10ms,jdk >=16 是<1ms )。

  • 暂停时间不会随着堆、live-set 或 root-set 的大小而增加。

  • 使用内存大小从 8MB 到16TB 地堆。

ZGC 具有以下特征:

  • 并发

  • 基于 region

  • 压缩

  • NUMA 感知

  • 使用彩色指针

  • 使用负载屏障

ZGC 的核心是一个并发垃圾收集器,这意味着所有繁重的工作都在Java 线程继续执行的同时完成。这极大地限制了垃圾收集对应用程序响应时间的影响。

ZGC 特征

ZGC 收集器是一款基于 Region 内存布局的,(暂时) 不设分代的,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的,以低延迟为首要目标的一款垃圾收集器。

内存布局

ZGC 没有分代的概念

ZGC 的内存布局说起。与 Shenandoah 和 G1一样,ZGC 也采用基于 Region 的堆内存布局,但与它们不同的是 , ZGC 的 Region 具 有 动 态 性 (动态创建和销毁 , 以及动态的区域容量大小)。在 x64硬件平台下 , ZGC 的 Region 可以具有大、中、小三类容量(如下图所示):

  • 小型 Region (Small Region ): 容量固定为 2M, 存放小于 256K 的对象。

  • 中兴 Region (Medium Region): 容量固定为 32M,放置大于等于256K但小于4M的对象。

  • 大型 Region (Large Region): 容量不固定,可以动态变化,但必须为2MB 的整数倍,用于放置 4MB或以上的大对象。

ZGC工作原理是什么,ZGC垃圾收集器详解

NUMA-aware

NUMA 对应的有 NMA 、UMA 即 Uniform Memory Access Architecture, NUMA 就是 Non Uniform Memory Access Architecture. UMA 表示内存只有一块,所有的 CUU 都要去访问这些内存,那么会存在竞争问题(竞争内存总线访问权),有竞争就要去加锁,有锁效率就会受到影响,而且 CPU 核心数越多,竞争就越激烈。NUMA 的话每个 CPU 对应有一个内存块,且这块内存在主板上离这个 CPU 是最近的,每个 CPU 优先访问这块内存,那效率就自然提高了。

ZGC工作原理是什么,ZGC垃圾收集器详解

服务器的 NUMA 架构在中大型系统上非常流行,也就是高性能的解决方案,尤其在系统延迟方面表现非常优秀,ZGC 是能自动感知 NUMA 架构并且充分利用 NUMA 架构的特征。

染色指针(Colored Pointer)

Colored Pointer, 即染色指针,如图所示, ZGC 的核心设计之一。以前的垃圾收集器的 GC 信息都保存在对象口中,而 ZGC 的 GC 信息保存在指针中(直接把标记信息记录在对象的引用指针上)。

ZGC工作原理是什么,ZGC垃圾收集器详解

每个对象有一个64位指针,这64位被分为:

  • 18位:预留给以后使用。

  • 1位:Finalizable标识,此位与并发引用处理有关,它表示这个对象只能通过finalizer才能访问(finalizer:object基类的一个空方法,如果被重写则会在GC之前调用该方法,该方法会且只会被调用一次)。

  • 1位:Remapped 标识,设置此位的值后,对象未指向relocation set中(relocation set表示需要GC的Region集合)。

  • 1位:Marked1标识。

  • 1位:Marked0标识,和上面的Marked1都是标记对象用于辅助GC。

  • 42位:对象的地址(所以它可以支持2^42=4T内存):

为什么会有两个 mark 标记?

每一个GC周期开始时,会交换使用的标记位,使上次GC周期中修正的已标记状态失效,所有引用都变成未标记。GC周期1:使用mark0, 则周期结束所有引用mark标记都会成为 01。GC周期2:使用mark1, 与周期1相同,所有的mark标记都会成为 10。

ZGC不能做指针压缩?

指针压缩指的是压缩为32位,寻址位数不能超过35,也就是JVM内存最大为32G(2^35=32GB),这里的寻址位数已经达到了42位。

颜色指针的三大优势?

  1. 在一个Region中的所有存活对象都被移走后(复制走后),这个Region就可以被立即释放掉,因为它还有转发表记录着原始地址和新地址,这样的话,理论上,只要还有一个Region对象空闲,ZGC就能完成垃圾收集。

  2. 颜色指针有指针的“自愈”(Self-Healing)能力,这样子就减少了写屏障(例如三色标记中的增量更新或原始快照),只需要一个读屏障就可以解决问题,减少了内存屏障的使用数量。

  3. 颜色指针有着极大的扩展性,因为还有18位未使用,这样更有利于后续功能的扩展。

多重映射寻址

不同的虚拟机内存到物理内存的转换关系可以在硬件层面,操作系统层面或者软件层面来实现。在 Linux 平台上 ZGC 采用了多重映射(Mult-Mapping)将多个不同的虚拟内存地址映射到同一个物理内存地址上,着是一种多对一映射,一位着 ZGC 在虚拟内中看到的地址空间要比时机的堆内存容量来得更大。把染色指针中的标志位看作是地址分段符,那只要将这些不同的地址分段符都映射到同一个福利内空间,经过多重映射转换后,就可以直接使用染色指针进行寻址了,如下图所示:


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/903124.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


网络知识
小编:小易整编
相关文章相关阅读
  • 计算机按工作原理可分为什么

    计算机按工作原理可分为什么

    计算机按工作原理可分为数字计算机和模拟计算机。数字式电子计算机是当今世界电子计算机行业中的主流,其内部处理的是一种称为符号信号或数字信号的电信号,它有着运算速度快、运算精度高、通用性强等特点。模拟计算机是根据相似原理,用一种连续变化的模拟量...

  • 起动机的工作原理是什么

    起动机的工作原理是什么

    起动机是用于启动内燃机的装置,以下是起动机的工作原理:1、启动时,电源通过起动电路提供电流给起动机;2、当电流通过电动机时,开始旋转;3、电动机旋转,将电动机的转动力传递给发动机的曲轴;4、曲轴转动,带动活塞和气门等部件开始运动;5、汽油或...

  • 玻璃硬盘原理

    玻璃硬盘原理

    玻璃硬盘的原理基于激光干涉和全息技术,利用激光束照射到玻璃基底上,通过干涉图案将数据编码为三维像素。这些像素以微米级别的尺寸在玻璃表面形成干涉图案,每个像素都包含数据的二进制信息。由于玻璃基底的稳定性和耐久性,可以使用光学显微镜对存储在其中...

  • 交换机的工作原理是什么

    交换机的工作原理是什么

    交换机的工作原理包括:1、数据帧接收和解析;2、转发表的更新;3、数据帧的转发;4、泛洪处理;5、维护连接。详细介绍:1、数据帧接收和解析,当交换机接收到一个数据帧时,它会首先对数据帧进行解析,提取出其中的源mac地址和目的mac地址等信息...

  • 蜂鸣器的工作原理是什么

    蜂鸣器的工作原理是什么

    蜂鸣器工作原理主要基于压电效应或电磁效应,通过改变输入的电压、频率或者触发信号,可以控制蜂鸣器的声音频率和强度,实现不同的音调和音量效果。本教程操作系统:Windows10系统、DellG3电脑。蜂鸣器(Buzzer)是一种电子器件,用于...

  • 听诊器的工作原理是什么

    听诊器的工作原理是什么

    听诊器的工作原理是通过声学传感器将人体内部的声音转化成电信号,然后通过耳机或扩音器放大和传输这些信号给医生,它的工作原理基于声学原理,能够帮助医生听到内部声音并进行疾病诊断。听诊器的核心部件是声学传感器,通常由一个共振膜和一个接收器组成,共...

  • 蠕动泵的工作原理是什么

    蠕动泵的工作原理是什么

    蠕动泵主要通过蠕动运动实现液体的输送:1、由一个柔软的管路和一个可以挤压这个管路的滚轮或转子组成;2、蠕动泵开始工作时,滚轮或转子会沿着管路的长度方向滚动;3、当滚轮或转子挤压管路时,液体会受到挤压力,从而引起管路内部的液体形成蠕动波;4、...

  • 逆向强化学习:定义、原理和应用

    逆向强化学习:定义、原理和应用

    逆向强化学习(IRL)是一种机器学习技术,通过观察到的行为来推断其背后的潜在动机。与传统的强化学习不同,IRL无需明确的奖励信号,而是通过行为来推断潜在奖励函数。这种方法为理解和模拟人类行为提供了一种有效的途径。IRL的工作原理基于马尔可夫...

  • 周排行
  • 月排行
  • 年排行

精彩推荐