软件体系结构 - 垃圾收集器(1)分代ZGC

简介: 【4月更文挑战第22天】软件体系结构 - 垃圾收集器(1)分代ZGC

ZGC(Z Garbage Collector)是Java平台的一种低延迟垃圾收集器,特别设计用于处理大规模数据集,并在保持对应用停顿时间(STW,Stop-The-World)有严格要求的场景下提供高性能。ZGC属于并发、并行的垃圾收集器,其核心特性之一就是采用了“分代”内存管理策略。

分代内存管理

在Java中,分代内存管理是一种普遍采用的垃圾收集策略,它将堆内存划分为不同的区域或代(Generation),每个代对应着对象的不同生命周期阶段。ZGC同样遵循这一理念,主要分为以下几代:

  1. 年轻代(Young Generation):新创建的对象通常首先分配在这里。年轻代又进一步细分为 Eden 区和两个 Survivor 区(通常称为From和To)。大部分短生命周期的对象在此完成其生命周期,当年轻代空间不足时,触发一次Minor GC(年轻代垃圾回收)。
  2. 老年代(Old Generation):经过多次Minor GC后仍然存活的对象会被晋升到老年代。老年代存储的是长期存活或者大对象。当老年代空间不足时,会触发Major GC(也称为Full GC,整堆垃圾回收)。

ZGC在实现上对分代概念进行了优化和调整:

ZGC的改进

  1. 颜色指针与着色(Color Pointers and Coloring):ZGC引入了“颜色指针”,即每个对象引用都携带一个额外的标记位,用于表示对象是否处于移动状态或已移动到新的地址。这种设计使得ZGC在进行垃圾回收时无需进行传统的“停止世界”操作来更新所有指向已移动对象的引用。
  2. 读屏障(Read Barrier):ZGC使用了轻量级的读屏障来跟踪对象访问。当应用程序读取对象引用时,读屏障会检查该引用的颜色标记,如果对象已经移动,则自动重定向到新地址,从而实现在垃圾回收过程中并发地处理应用程序的读操作。
  3. 异步并发(Asynchronous Concurrency):ZGC的大部分工作都是并发执行的,包括初始标记、并发标记、并发预备重分配、并发重分配以及并发重初始化等阶段。这些并发操作极大地减少了对应用程序的停顿影响。
  4. 可扩展性(Scalability):ZGC设计之初就考虑了处理TB级别堆内存的能力,通过使用Region内存布局(类似于G1垃圾收集器)、并行化垃圾回收任务以及上述的并发技术,确保在大规模数据集上仍能保持较低的停顿时间和良好的性能。
  5. 低延迟目标(Low Latency Goal):ZGC承诺在任何堆大小下,垃圾回收的停顿时间都不超过10ms。这使得ZGC非常适合于对响应时间有严格要求的服务,如实时交易系统、大数据分析等。

总结来说,ZGC作为一款现代的垃圾收集器,虽然遵循了Java平台的分代内存管理原则,但在实现层面引入了一系列创新技术,如颜色指针、读屏障、异步并发等,旨在提供极低的停顿时间、高吞吐量以及对大规模数据集的良好支持,尤其适用于对延迟敏感且需要处理大量数据的Java应用程序。

相关文章
|
1天前
|
存储 Oracle Java
分代 ZGC 详解
本文主要介绍JDK21中的分代ZGC详解,包括染色指针、内存屏障等核心概念及ZGC JVM参数介绍 ZGC(Z Garbage Collector)是Java平台上的一种垃圾收集器,它是由Oracle开发的,旨在解决大堆的低延迟垃圾收集问题。ZGC是一种并发的分代垃圾收集器,它主要针对具有大内存需求和低停顿时间要求的应用程序。
分代 ZGC 详解
|
1天前
|
监控 Java Shell
软件体系结构 - 垃圾收集器(3)G1
【4月更文挑战第22天】软件体系结构 - 垃圾收集器(3)G1
23 2
|
1天前
|
算法 Java
垃圾收集-垃圾收集算法
垃圾收集-垃圾收集算法
21 0
垃圾收集-垃圾收集算法
|
1天前
|
算法 Java UED
垃圾收集器
垃圾收集器
34 0
|
1天前
|
消息中间件 安全 算法
G1和ZGC垃圾收集器
G1和ZGC垃圾收集器
|
8月前
|
机器学习/深度学习 算法 Java
大牛用十年功力带你彻底理解JVM垃圾回收器:ZGC,回收设计
ZGC的并发回收算法采用的也是“目的空间不变性”的设计,关于目的空间不变性的更多内容可以参考第7章。 在第7章中提到,Shenandoah从JDK 13开始也采用“目的空间不变性”的设计。但是ZGC与Shenandoah相比,还是有不少细节并不相同,如表8-3所示。
|
9月前
|
存储 算法 Oracle
一文带你深入理解JVM - ZGC垃圾收集器
ZGC(Z Garbage Collector)是一款由Oracle公司研发的,以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局,(暂时)不设年龄分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的收集器。在JDK 11新加入,还在实验阶段,主要特点是:回收TB级内存(最大4T),停顿时间不超过10ms。
123 0
|
算法 安全 Java
深入剖析垃圾收集器之后,我发现里面没有扫帚
深入剖析垃圾收集器之后,我发现里面没有扫帚
深入剖析垃圾收集器之后,我发现里面没有扫帚
|
缓存 算法 安全
JVM(四)垃圾收集算法与垃圾收集器
JVM(四)垃圾收集算法与垃圾收集器
77 0
|
机器学习/深度学习 缓存 算法
jvm垃圾收集器 以及 垃圾收集算法
jvm垃圾收集器 以及 垃圾收集算法
95 0
http://www.vxiaotou.com