美文网首页jvm
Java JVM ZGC垃圾回收器

Java JVM ZGC垃圾回收器

作者: zhglance | 来源:发表于2021-02-09 11:14 被阅读0次

1.ZGC简介

ZGC(Z Garbage Collector)是一款基于Region内存布局(有点类似于G1)的,不设置分代的,使用了读屏障、染色体指针和内存多重映射等技术来实现可并发标记-整理算法的,以低延迟为首要目标的一款垃圾收集器。旨在尽可能对吞吐量影响不大的前提下,实现在任意堆内存大小都可以把垃圾收集的停顿时间限制在10ms以内的低延迟。

主要特点:

1.ZGC不分代,每次垃圾回收都是全量内存进行标记,每次相当于Full GC,但回收的时候可采取部分回收的策略;
2.内存分区管理,分成小中大三种分区粒度;
3.仅支持Linux 64位系统,不支持Window;
4.具有读屏障,实现并发标记和并发转移的处理;
5.不支持指针压缩;
6.具有染色体指针,实现并发标记、转移和重定位;
7.小分区优先回收,中分区和大分区尽量不回收;
8.针对多核,支持非统一内存访问,即NUMA(Non-Uniform Memory Access),小分区优先分配到CPU的本地内存中,中大分区则交由操作系统处理。

1.1 Java各种GC的并发比较

Java各种GC的并发比较.jpg

2.ZGC实现原理

1.2 ZGC的Region

  • Small Region: 固定为2MB,存放小于256KB的小对象;
  • Medium Region: 固定为32MB,存放大于等于256KB且小于4MB的对象;
  • Large Region: 容量固定,但必须是2MB的整数倍,存放大于等于4MB的对象,一个Large Region只会存放一个大对象,因此实际Large Region可能会小于Medium Region,最小为4MB,Large Region是不会被重分配,因为复制一个大对象代价昂贵。
ZGC-Region.jpg

1.2 ZGC的染色体指针(colored pointer)

染色体指针.jpg
  • Finalizable:标识对象只能通过finalizable()访问;
  • Remapped:标识引用是最新的,即对象是否在重定向后的集合中;
  • Marked1:用于标记可达对象;
  • Marked0:保留位,将来可能会使用。

相关文章

  • Java JVM ZGC垃圾回收器

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

  • JVM垃圾回收算法

    Java基础:JVM垃圾回收算法 [toc] 参考:Java基础:JVM垃圾回收算法图解JVM垃圾回收算法 总结:...

  • 浅析JAVA的垃圾回收机制(GC)

    1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供...

  • Java 常见的垃圾回收器

    Java 常见的垃圾回收器 垃圾回收器 (GC, Garbage Collector)是和具体的 JVM 实现紧密...

  • Java垃圾回收

    1.什么是垃圾回收?垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种...

  • JVM垃圾回收

    参考资料:[1]. 浅析JAVA的垃圾回收机制(GC)[2]. JVM 七种垃圾回收器[3]. JVM(六)为什么...

  • JVM垃圾回收

    JVM垃圾回收 内存结构 要想理解jvm的垃圾回收机制,必须先知道java虚拟机的内存结构。 程序计数器程序计数器...

  • JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比

    谈垃圾回收器之前,要先讲讲垃圾回收算法,以及JVM对垃圾的认定策略,JVM垃圾回收器是垃圾回收算法的具体实现,了解...

  • 2020-04-03 JVM垃圾回收相关文章引用

    这三篇文章总结的非常到位,收藏在这里。 Jvm垃圾回收器(基础篇) Jvm垃圾回收器(算法篇) Jvm垃圾回收器(...

  • 初步学习JVM底层原理(二)

    Java之JVM垃圾回收 内存结构以及垃圾回收算法 作为Java语言的核心之一,JVM垃圾回收帮我们解决了让我们很...

网友评论

    本文标题:Java JVM ZGC垃圾回收器

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