新一代垃圾回收器ZGC设计与实现

彭成寒
前言 JDK 11于2018年9月25日正式发布,这个版本引入了许多新的特性,其中最为引人注目的就是实现了一款新的垃圾回收器ZGC。Java开发人员日常工作中最关注、接触最多的就是JVM中的垃圾回收器,所以该垃圾回收器一经发布,立即吸引了大量开发人员的目光。在JDK 11中,ZGC被明确标记为实验性质(意味着还不成熟),这样一款尚不成熟的垃圾回收器为什么能合入OpenJDK的官方项目中?它对以前的垃圾回收器的改进体现在哪里?它的创新点是什么?它的不足有哪些?本书尝试从ZGC的代码出发,分析ZGC的设计和实现,希望能找到上述问题的答案。 ZGC是一款开源的垃圾回收器,本书从原理和代码角度对ZGC进行剖析,与大家一起学习ZGC,并希望通过本书的介绍让更多的人认识和使用它,也希望大家在学习的过程中都能理解、掌握、精通ZGC,并能在社区中贡献自己的力量。 本书共分为10章: ·第1章介绍JVM中实现的垃圾回收器,其中着重介绍了G1,最后介绍了ZGC对G1的改进以及当下ZGC尚需完善之处。 ·第2章首先介绍内存地址多视图映射,然后介绍ZGC中的物理内存和虚拟内存,以及它们的管理,最后介绍ZGC如何分配对象。 ·第3章主要介绍ZGC中涉及的四大控制线程:ZDirector负责垃圾回收的触发,ZDriver负责垃圾回收的执行,ZStat负责收集统计信息,VMThread负责控制进行STW操作。 ·第4章介绍ZGC如何利用地址多视图映射设计并发算法进行并发标记、并发转移和并发重定位。 ·第5章介绍ZGC垃圾回收过程的10个步骤以及每一步所做的工作,同时给出了算法示例图演示整个垃圾回收的过程。 ·第6章分析一个完整的ZGC运行日志,并针对每一行日志进行解释,为读者了解ZGC的运行情况提供帮助。 ·第7章首先介绍ZGC中最常用的参数,包括ZGC新引入的参数、ZGC重用的通用GC参数,然后介绍…