ZGC垃圾收集器

简介: ZGC垃圾收集器

一、ZGC概要


1.1 ZGC研究资料


这块要详细拿出来说一下。


  1. ZGC官网介绍:https://wiki.openjdk.java.net/display/zgc/Main
  2. ZGC文档(pdf,讲解详细):http://cr.openjdk.java.net/~pliden/slides/ZGC-Jfokus-2018.pdf


这两篇文章,详细介绍了ZGC。第二个是pdf文档,可以下载下来详细看。


1.2 ZGC支持的平台


这个可以在官方文档(https://wiki.openjdk.java.net/display/zgc/Main)上看到,目前jdk11目前只支持linux。

1187916-20211108104022300-598068238.png

JDK11只支持Linux64位,到jdk4开始支持windows和macOS。


1.3 ZGC的目标

1187916-20211108113125124-505939997.png


我们来看看ZGC都有哪些目标,目标也就是ZGC存在的意义。


  1. 支持更大的堆内存空间。多大算是更大呢?以前都是GB级别的,现在到TB级别。在jdk11版本最大可以支持到4T的内存。(这里不是硬盘是4T,是内存,重点强调,内存。)未来一二十年的场景都涵盖到了。


  1. 支持更短的GC停顿时间,目标是10ms以内:这个更短的GC停顿时间是STW的时间。这一点就更厉害了,支持的内存打了,但是STW停顿时间却短了。


  1. 为未来的 GC 功能奠定基础. 奠定了未来垃圾收集器的一个基石。如果未来还要再升级GC,那么就会以ZGC底层算法为标准进行研究。之前我们垃圾收集都是以CMS为基石,比如G1就是在CMS的基础上发展而来的。ZGC也是在CMS的基础上发展。


  1. 吞吐量降低不超过15%:STW的时间控制的越短,那么吞吐量就会越低。这里ZGC的目标是,控制吞吐量降低不超过15%。


  1. 通常我们GC的时间是1000ms,但是为了降低GC收集时STW的时间,我们控制STW的时间为10ms以内,产生的后果可能是GC整体时间边长了。原来是1000ms,现在变成了1150ms。这样吞吐量就降低了。


1.4 ZGC启动的命令


  1. 启动ZGC并打印日志:-XX:+UseZGC -Xmx -Xlog:gc
  2. 启动ZGC并打印详细日志:-XX:+UseZGC -Xmx -Xlog:gc


1.5 ZGC的特点:


ZGC不分代了。


我们以前分代的原因是什么?因为大部分对象都有朝生夕死的特点。所以朝生夕死的对象可能就要求尽快被清理掉。如果不分代了,结果就是,可能更频繁的触发gc,因为里面有很多朝生夕死的对象。然后每次gc,都会遍历所有的对象

ZGC为什么部分带了呢?因为分代实现起来比较麻烦,作者就先实现了一个比较简单可用的单代版本,后续优化可能会分代。


二、ZGC的内存模型



相关文章
|
7月前
|
存储 算法 Java
深入理解JVM - ZGC收集器
深入理解JVM - ZGC收集器
210 1
|
7月前
|
存储 Oracle Java
分代 ZGC 详解
本文主要介绍JDK21中的分代ZGC详解,包括染色指针、内存屏障等核心概念及ZGC JVM参数介绍 ZGC(Z Garbage Collector)是Java平台上的一种垃圾收集器,它是由Oracle开发的,旨在解决大堆的低延迟垃圾收集问题。ZGC是一种并发的分代垃圾收集器,它主要针对具有大内存需求和低停顿时间要求的应用程序。
分代 ZGC 详解
|
6月前
|
算法 Oracle Java
垃圾收集器
复制算法和标记算法都是基于分代收集理论来的。
38 0
|
7月前
|
消息中间件 安全 算法
G1和ZGC垃圾收集器
G1和ZGC垃圾收集器
|
存储 算法 Java
深入解析ZGC垃圾回收器
ZGC的目标是希望在尽可能对吞吐量影响不太大的前提下 ,实现在任意堆内存大小下都可以把垃圾收集的停顿时间限制在十毫秒以内的低延迟。
184 1
深入解析ZGC垃圾回收器
|
存储 算法 Oracle
一文带你深入理解JVM - ZGC垃圾收集器
ZGC(Z Garbage Collector)是一款由Oracle公司研发的,以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局,(暂时)不设年龄分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的收集器。在JDK 11新加入,还在实验阶段,主要特点是:回收TB级内存(最大4T),停顿时间不超过10ms。
211 0
|
算法 Java UED
JVM - 再聊GC垃圾收集算法及垃圾收集器
JVM - 再聊GC垃圾收集算法及垃圾收集器
106 0
|
算法 安全 Java
深入剖析垃圾收集器之后,我发现里面没有扫帚
深入剖析垃圾收集器之后,我发现里面没有扫帚
118 0
深入剖析垃圾收集器之后,我发现里面没有扫帚
|
缓存 算法 安全
JVM(四)垃圾收集算法与垃圾收集器
JVM(四)垃圾收集算法与垃圾收集器
103 0
|
机器学习/深度学习 缓存 算法
jvm垃圾收集器 以及 垃圾收集算法
jvm垃圾收集器 以及 垃圾收集算法
125 0