深入理解JVM - Shenandoah垃圾收集器
如果下面的一些概念有些不清楚的可以先看深入理解JVM - 垃圾收集器。 Shenandoah是一款只有OpenJDK才会包含的收集器,最开始由RedHat公司独立发展后来贡献给了OpenJDK,相比G1主要改进点在于: 支持并发的整理算法,Shenandoah的回收阶段可以和用户线程并发执行; Shenandoah 目前不使用分代收集,也就是没有年轻代老年代的概念在里面了; Shenandoah 摒弃了在G1中耗费大量内存和计算资源去维护的记忆集,改用名为“连接矩阵”(Connection Matrix)的全局数据结构来记录跨Region的引用关系,降低了处理跨代指针时的记忆集维护消耗,也降低了伪共享问题的发生概率。 Shenandoah收集器的工作过程 Shenandoah收集器的工作过程一共有九个阶段,下图只画了最核心的三个阶段并发标记、并发回收、并发引用更新。 初始标记(Initial Marking):与G1一样,只标记与GC Roots直接关联的对象,这个阶段仍是“Stop The World”的,但停顿时间与堆大小无关,只与GC Roots的数量相关。 并发标记(Concu...




