JVM---ZGC收集器

ZGC(“Z”并非什么专业名词的缩写,这款收集器的名字就叫作Z Garbage Collector)是一款在JDK 11中新加入的具有实验性质的低延迟垃圾收集器。ZGC收集器是一款基于Region内存布局的,(暂时) 不设分代的,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的,以低延迟为首要目标的一款垃圾收集器。

Z G C采用基于Region的堆内存布局,但与它们不同的是 , ZGC的Regio具 有 动 态 性 — —动态创建和销毁 ,以及动态的区域容量大小。 在x64硬件平台下,ZGC的Region可以具有大、中、小三类容量:

  • 小型Region(Small Region):容量固定为2M B,用于放置小于256KB的小对象。
  • 中型Region(M edium Region):容量固定为32M B,用于放置大于等于256KB但小于4M B的对
    象。
  • 大型Region(Large Region):容量不固定,可以动态变化,但必须为2M B的整数倍,用于放置 4M B或以上的大对象。每个大型Region中只会存放一个大对象,这也预示着虽然名字叫作“大型 Region”,但它的实际容量完全有可能小于中型Region,最小容量可低至4M B。大型Region在ZGC的实 现中是不会被重分配(重分配是ZGC的一种处理动作,用于复制对象的收集器阶段,稍后会介绍到) 的,因为复制一个大对象的代价非常高昂。

ZGC收集器有一个标志性的设计是它采用的染色指针技术(Colored Pointer)。ZGC的染色指针直接把标记信息记在引用对象的指针上,这时,与其说可达性分析是遍历对象图来标记对象,还不如说是遍历“引用图”来标记“引用”了。

Linux下64位指针的高18位不能用来寻址,但剩余的46位指针所能支

你可能感兴趣的:(JVM)