从原理聊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开发者的使用体验。
➡️