一、概念
- Zero 停顿 GC,吹的很狂,号称0 GC其实不是哈。只是GC时间短
- CMS(300ms),G1(100~200ms),ZGC(10ms以内)
- JDK11开始有了,不过在JDK11~JDK14都是实验阶段,只有到JDK15以上才能投入生产用
- 支持8G~4TB的堆,JDK15以后支持64TB
- 停顿时间不会随着堆的变大而增大
二、内存划分(页Page)
- ZGC没有分代的概念,只是单纯的将内存划分成Page
- Page的大小2M、32M、大于32M
三、三大核心技术
多重映射
- 就是将我们的内存地址,映射成3个视图,只有当真正清理垃圾的时候,才会去动内存,别的操作都是在操作视图。这就是它快的一点
- 视图分类:M0、M1、Remapped
- 一个对象可以有三种不同的视图状态,但是在GC的时候,在一个时间段内只能是一种状态。
- 这3个视图,对于一个对象来说,指向的都是同一个物理内存地址,就是三种不同的叫法。
空间瞬移
- 多重映射的高级版本,当前Oracle正在研究落实
- 强依赖CPU和算力
- 基本思想:
- 当你的内存中有很多散乱的对象,垃圾回收是不是很麻烦
- 利用视图以及强大的算力,计算出这些对象存在那个视图
- 直接回收这个视图里面的就好了啊
读屏障
- 这个“读屏障”跟你理解的不是一个东西,ZGC独有的,叫做读屏障
- 作