A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ZGC-垃圾收集器


Z Garbage Collector,即ZGC,是一个可伸缩的、低延迟的垃圾收集器,

ZGC的优点:

        停顿时间不会超过10ms
        停顿时间不会随着堆的增大而增大(不管多大的堆都能保持在10ms以下)
        可支持几百M,甚至几T的堆大小(最大支持4T)


ZGC的特性:

Concurrent :
        ZGC只有短暂的STW,大部分的过程都是和应用线程并发执行,比如最耗时的并发标记和并发移动过程。

Region-based :
        ZGC中没有新生代和老年代的概念,只有一块一块的内存区域page,以page单位进行对象的分配和回收。

Compacting :
        每次进行GC时,都会对page进行压缩操作,所以完全避免了CMS算法中的碎片化问题。

NUMA-aware :
        多CPU插槽的服务器都是Numa架构


ZGC默认支持NUMA架构,
在创建对象时,根据当前线程在哪个CPU执行,优先在靠近这个CPU的内存进行分配,
这样可以显著的提高性能,在SPEC JBB 2005 基准测试里获得40%的提升。

Using colored pointers和以往的标记算法比较不同,
        CMS和G1会在对象的对象头进行标记,而ZGC是标记对象的指针。
        其中低42位对象的地址,42-45位用来做指标标记。

Using load barriers
        因为在标记和移动过程中,GC线程和应用线程是并发执行的,
        所以存在这种情况:对象A内部的引用所指的对象B在标记或者移动状态,
        为了保证应用线程拿到的B对象是对的,
        那么在读取B的指针时会经过一个 “load barriers” 读屏障,这个屏障可以保证在执行GC时,数据读取的正确性。


注意:ZGC目前只在Linux/x64上可用

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马