首页  

ZGC特性简介     所属分类 ZGC 浏览量 844
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命令