G1垃圾收集器
一、特点:并行与并发
- 并行:多线程的垃圾收集。
- 并发:和用户线程并发执行。
-
内存模型不同:强调分区而不是分代。在使用G1垃圾收集器时堆会被划分成多个大小相等的region,虽然还有新生代老年代的概念但是他们不再是物理的隔离,而是都是一部分的region的集合。两个region之间采用的复制算法实现,从整体上又符合标记整理算法的特征。
-
可预测停顿:G1可根据region的回收价值,回收部分最有价值的堆空间而不是进行全部老年代的扫描。根据用户设定的最大GC暂停参数,建议可预测的停顿。
-
空间整合:局部采用复制算法,多个region整合成一个region,实现天然的压缩,去碎片化。
二、关键词
- region:大小相等的物理联系的内存,大小在1-32M之间,默认将堆划分成2000多个region。
- rset:cset用来记录其他region的对象对于本region中对象的引用。这样的目的是防止在做可达性分析的时候,进行全堆的扫描。一般是记录old—>young,或者old—>old 。
-
cset:需要回收的region的集合。young GC的时候就是young region集合,mixed GC的时候就是young region和部分old region的集合。在进行GC时Cset中的存活对