ZGC特性简介
所属分类 ZGC
浏览量 1030
ZGarbage Collector ZGC 主要设计目标
停顿时间不超过10ms
停顿时间不会随着堆的增大而增大(不管多大的堆都能保持在10ms以下)
可支持几百M,甚至几T的堆大小(最大支持4T)
SPECjbb 2015基准测试,128G堆 最大停顿时间才1.68ms
G1 通过只回收部分Region,避免全堆扫描,改善了大堆下的停顿时间 ,几十到几百毫秒
ZGC特性
Concurrent
只有短暂的STW,大部分过程和应用线程并发执行,比如最耗时的并发标记和并发移动过程
Region-based
不分代,没有新生代和老年代的概念,只有一块一块的内存区域page
Compacting
GC时,对page进行压缩操作,避免CMS算法中的碎片问题
NUMA-aware
多CPU插槽的服务器都是Numa架构,比如两颗CPU插槽(24核),
64G内存的服务器,那其中一颗CPU上的12个核,访问从属于它的32G本地内存,要比访问另外32G远端内存要快得多
ZGC默认支持NUMA架构,在创建对象时,根据当前线程在哪个CPU执行,
优先在靠近这个CPU的内存进行分配,这样可以显著的提高性能,在SPEC JBB 2005 基准测试里获得40%的提升
Using colored pointers
CMS和G1在对象的对象头进行标记,ZGC标记对象的指针(引用)
低42位是对象地址
42-45位用来做指标标记
Using load barriers
标记和移动过程中,GC线程和应用线程并发执行,
为了保证应用线程拿到的B对象是对的,读取B的指针时 使用读屏障 load barriers
保证执行GC时,数据读取的正确性 一致性
上一篇
下一篇
ZGC指南
java GC 进化
CMS G1 ZGC 堆内存区别
ZGC垃圾回收触发机制
busybox简介
Linux ps命令