简介

Garbage First Collector是一款以降低最大暂停时间为目标的服务端回收器。

region
都知道cms使用标记清除算法,会导致内存碎片。g1就是用了划分region的方案来解决解决内存碎片。g1中,逻辑上可以认为整块内存仍是分代的。物理上,内存被划分为若干等大region。每一块region都可以被用作老年代或者年轻代。

G1 GC

card
每一个region又分为若干card,每一个card对应region内一个块区域。所有的card都会有状态,比方说dirty等,最终都会由统一的全局的card table记录。每一块card都对应card table里的一个entry,每一个entry实现为一个byte字节。

G1 GC

rSet
后面会介绍g1的回收模式。总体而言,g1的回收过程和标记过程是独立的。并且回收是以region为单位进行,为了保证region回收的独立性,每一个region都需要使用rSet记录外部引用,这样在回收时就不需要遍历整堆而只需要遍历rSet就可以完成回收。下面是一个例子:
G1 GC
比方说regionA的一块card被regionB和regionC引用了,那么regionA的rSet就会记录B和C的card。

相关文章: