前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >14. ZGC垃圾收集器

14. ZGC垃圾收集器

作者头像
用户7798898
发布2021-11-10 15:02:05
5510
发布2021-11-10 15:02:05
举报
文章被收录于专栏:盛开在夏天的太阳

一、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。

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

1.3 ZGC的目标

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

  1. 支持更大的堆内存空间。多大算是更大呢?以前都是GB级别的,现在到TB级别。在jdk11版本最大可以支持到4T的内存。(这里不是硬盘是4T,是内存,重点强调,内存。)未来一二十年的场景都涵盖到了。
  2. 支持更短的GC停顿时间,目标是10ms以内:这个更短的GC停顿时间是STW的时间。这一点就更厉害了,支持的内存打了,但是STW停顿时间却短了。
  3. 为未来的 GC 功能奠定基础. 奠定了未来垃圾收集器的一个基石。如果未来还要再升级GC,那么就会以ZGC底层算法为标准进行研究。之前我们垃圾收集都是以CMS为基石,比如G1就是在CMS的基础上发展而来的。ZGC也是在CMS的基础上发展。
  4. 吞吐量降低不超过15%:STW的时间控制的越短,那么吞吐量就会越低。这里ZGC的目标是,控制吞吐量降低不超过15%。 通常我们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的内存模型

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、ZGC概要
    • 1.1 ZGC研究资料
      • 1.2 ZGC支持的平台
        • 1.3 ZGC的目标
          • 1.4 ZGC启动的命令
            • 1.5 ZGC的特点:
            • 二、ZGC的内存模型
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档