shenandoah是由red hat独立研发、2014年贡献给openjdk的首个非oracle主导gc,2019年进入jdk 12实验阶段,jdk 15正式转正但未被oracle jdk支持;它采用连接矩阵、brooks指针和不分代设计,由社区驱动并深度集成于openjdk生态。

Shenandoah不是Oracle主推的垃圾收集器,它由Red Hat公司独立研发,2014年贡献给OpenJDK社区,是HotSpot虚拟机中首个非Sun/Oracle官方团队主导开发的GC实现。
开源路径与JDK版本演进
它最早作为实验特性进入OpenJDK 12(2019年3月),在OpenJDK 15中正式转正;但始终未被纳入商业版Oracle JDK——Oracle JDK 12至JDK 23均不支持Shenandoah。用户必须使用OpenJDK构建(如Adoptium、Amazon Corretto、Red Hat build of OpenJDK等)才能启用。
技术自主性体现
虽借鉴G1的Region内存布局和部分并发标记逻辑,Shenandoah在关键机制上完全自研:
- 用“连接矩阵”替代G1的记忆集,降低跨Region引用维护开销
- 采用Brooks转发指针(对象头额外8字节),配合写屏障实现并发移动
- 默认取消分代设计,堆内Region统一管理,不区分新生代/老年代
社区驱动与生态定位
作为OpenJDK原生特性,Shenandoah高度依赖社区协作:Red Hat主导开发,Eclipse Adoptium提供主流二进制分发,Linux发行版(如RHEL、Fedora)深度集成。它的存在强化了OpenJDK的技术多样性,也为低延迟场景提供了ZGC之外的开源替代方案。
这种非官方但深度融入OpenJDK主线的模式,体现了现代JVM生态中厂商共建、标准开放的趋势。











