https://juejin.cn/post/7316202730955522074

ZGC(Z Garbage Collector)的内存布局与G1(Garbage-First)在内存布局上有些相似,都采用了基于Region的堆内存布局。ZGC在内存布局方面引入了一些动态性的概念,Region的大小不是固定不变的,也不会区分新生代、老年代区域(实际在JDK21中又引入了新老年代分区的概念,后续我会继续跟踪出一版新的原理),使得它更加灵活和适应不同场景。

ZGC的内存布局主要涉及到动态创建、动态销毁以及动态的区域容量大小,以下是ZGC内存布局的一些关键特点:

  1. 动态创建: ZGC的Region可以根据需要动态创建,系统可以根据应用程序的实际内存需求,动态生成新的内存区域,以适应不同的工作负载。
  2. 动态销毁: 类似地,ZGC的Region也可以根据垃圾回收的情况动态销毁,当某个区域内的对象被回收后,该区域可以被标记为可用,随后可以被重新分配或销毁,以便更好地管理内存。
  3. 动态的区域容量大小: ZGC引入了不同大小的Region,包括Small Region(2MB)、Medium Region(32MB)和Large Region(可变大小),使得ZGC在内存分配时能够更好地适应不同大小的对象,提高内存利用率。

image.png

如上图所示,ZGC的Region分类包括:

这种动态的内存布局设计使得ZGC能够更好地适应不同的工作负载和对象分布模式。它能够在提供低延迟的同时,更加高效地管理内存空间,降低内存碎片化的程度。

作者:浣熊say链接:https://juejin.cn/post/7316202730955522074来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。