从原理聊JVM(三):详解现代垃圾回收器Shenandoah和ZGC | 京东云技术团队

💡 原文中文,约6500字,阅读约需16分钟。
📝

内容提要

ZGC是Oracle官方研发的垃圾回收器,采用染色指针技术实现并发回收,支持TB级内存,停顿控制在10ms以内。ZGC的设计目的是为了让Java开发者更专注于程序的运行。

🎯

关键要点

  • Shenandoah是由Red Hat开发的垃圾回收器,首次出现在Open JDK12中。

  • Shenandoah的设计目标是将停顿压缩到10ms级别,与堆大小无关。

  • Shenandoah与G1的主要区别包括并发回收、无年轻代和年老代的区分,以及使用连接矩阵替代卡表。

  • 连接矩阵优化了G1中的卡表问题,通过标记指向关系来提高效率。

  • 转发指针用于实现并发回收,减少了用户线程访问新对象的开销。

  • 转发指针存在线程安全和高频访问性能问题,Shenandoah通过CAS操作和优化屏障来解决。

  • Shenandoah的运行步骤包括初始标记、并发标记、最终标记、并发清理和并发回收。

  • ZGC是Oracle研发的垃圾回收器,支持TB级内存,停顿控制在10ms以内。

  • ZGC的内存布局采用动态创建和销毁的Region,分为小型、中型和大型Region。

  • ZGC使用染色指针技术实现并发回收,通过指针标记对象的存活状态。

  • 染色指针的优点包括自愈能力、无需写屏障和扩展性。

  • ZGC的运行步骤包括并发标记、并发预备重分配、并发重分配和并发重映射。

  • 现代垃圾回收器通过并发技术降低停顿时间,提升Java开发者的使用体验。

➡️

继续阅读