黑马程序员技术交流社区

标题: 【广州校区】【原创】ZGC-垃圾收集器 [打印本页]

作者: 帅气de路人甲    时间: 2020-3-19 09:36
标题: 【广州校区】【原创】ZGC-垃圾收集器
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上可用






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2