shenandoah垃圾收集器与G1相比有什么特色呢?
世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
-
shenandoah实现细节上的不同有哪些?
同样是基于region,但是在处理跨region引用时,不再使用每个region自带记忆集的方式,而是采用“连接矩阵”以全局的方式进行标记。
还有,shenandoah没有使用分代收集。 -
shenandoah收集过程上的不同有哪些?
G1收集有4步,分别是:初始标记 - 并发标记 - 最终标记 - 筛选回收。
shenandoah收集过程有九步:初始标记 - 并发标记 - 最终标记 - 并发清理 - 并发回收 - 初始引用更新 - 并发引用更新 - 最终引用更新 - 并发清理。
不同:前三步,两者是相同的,但是shenandoah在并发清理时,清理的是内部全部被标记为垃圾对象的region,并发清理完成后,并发回收是一个复制的过程,将存活的对象复制到新的region中,后面三步,是将对旧地址的引用更新为复制到region中的新对象的引用,当引用更新完成后,到了并发清理阶段,这里会将被复制的旧的region全部清除。
从过程中发现,shenandoah除了少数停顿时间特别短的步骤以外,其他步骤都是并发执行的,而这,正是新一代低延迟垃圾收集器的特色。