ZGC

作者: 技术灭霸 | 来源:发表于2020-03-25 16:27 被阅读0次

ZGC介绍

Z Garbage Collector,即ZGC,基于Region内存布局,不设置分代, 使用了读屏障, 染色指针和内存多重映射等技术实现的可并发标记-整理算法的,是一个可伸缩的、低延迟的垃圾收集器,主要为了满足如下目标进行设计:

  • 停顿时间不会超过10ms
  • 停顿时间不会随着堆的增大而增大(不管多大的堆都能保持在10ms以下)
  • 可支持几百M,甚至几T的堆大小(最大支持4T)

和G1开启很像,用下面参数即可开启:

-XX:+UnlockExperimentalVMOptions -XX:+UseZGC

ZGC特性

  • Concurrent(并发执行)
  • Region-based(内存基于region,类似G1)
  • Compacting(压缩)
  • NUMA-aware(Numa架构,一种内存页合并的硬件技术)
  • Using colored pointers(着色指针)
  • Using load barriers(读屏障)

(1)Concurrent

ZGC只有短暂的STW,大部分的过程都是和应用线程并发执行,比如最耗时的并发标记和并发移动过程。

(2)Region-based

ZGC中没有新生代和老年代的概念,只有一块一块的内存区域page,这和G1的region有点像,但和G1不一样的是,region的大小更加灵活和动态。zgc的region不会像G1那样在一开始就被划分为固定大小的region。

zgc的region核心亮点就是:动态

动态表现为:

  1. 动态地创建和销毁。
  2. 动态地决定region的大小。它的最小单位是2MB的一个块。然后每个region的大小就是是2MB*N就是。

(3)Compacting

每次进行GC时,都会对page进行压缩操作,所以完全避免了CMS算法中的碎片化问题。

(4)NUMA-aware

(2)Colored Pointers

是zgc的一个核心概念。你还可以叫它tag pointers,version pointers。

和以往的标记算法比较不同,CMS和G1会在对象的对象头进行标记,而ZGC是标记对象的指针。


在这里插入图片描述

一个pointer共64bit。开始的18bit暂时没有被用到(以后有可能要用),然后是四个bit,分别表示Finalizable、Remapped、Marked1、Marked0,这是gc过程中每个对象的状态。最后42bit是用来存储对象的地址。

(3)Using load barriers

因为在标记和移动过程中,GC线程和应用线程是并发执行的,所以存在这种情况:对象A内部的引用所指的对象B在标记或者移动状态,为了保证应用线程拿到的B对象是对的,那么在读取B的指针时会经过一个 “load barriers” 读屏障,这个屏障可以保证在执行GC时,数据读取的正确性。

相关文章

  • ZGC 详解

    目录 ZGC简介和性能 ZGC流程介绍 ZGC堆的内存布局 ZGC对NUMA支持 颜色指针在ZGC中的运用 读屏障...

  • 通过 Github 的 Actions 自动将 Issues 中

    原文记录:https://github.com/zhang0ZGC/zhang0ZGC/issues/11[htt...

  • ZGC

    ZGC介绍 Z Garbage Collector,即ZGC,基于Region内存布局,不设置分代, 使用了读屏障...

  • ZGC源码分析(6)- 日志分析

    根据ZGC运行的情况,截取部分关键的日志信息。分析如下: ZGC初始化信息 这一部分主要是ZGC初始化的状态。从日...

  • Java最前沿技术——ZGC

    ZGC介绍 ZGC(The Z Garbage Collector)是JDK 11中推出的一款追求极致低延迟的实验...

  • Jvm之ZGC垃圾收集器

    一、什么是ZGC? ZGC(The Z Garbage Collector)是JDK 11中推出的一款追求极致低延...

  • ZGC

    介绍 ZGC是JDK11之后带来的全新垃圾回收器,主要目标是降低停顿时间,但是会一定程度上降低吞吐量。 主要目标 ...

  • JVM 从入门到放弃之 ZGC 垃圾收集器

    ZGC 概述 Z Garbage Collector,也称为ZGC,在 jdk 11 中引入的一种可扩展的低延迟垃...

  • ZGC源码分析(3)- ZGC触发的时机

    ZGC以被动回收为主,即由后台线程控制何时启动垃圾回收。 ZGC的触发时机在 jdk11/src/hotspot/...

  • Java JVM ZGC垃圾回收器

    1.ZGC简介 ZGC(Z Garbage Collector)是一款基于Region内存布局(有点类似于G1)的...

网友评论

      本文标题:ZGC

      本文链接:https://www.haomeiwen.com/subject/etrxuhtx.html