深入解析Java虚拟机HotSpot

杨易
前言 为何写作本书 Java语言已经走过了20多个年头,在此期间虽然新语言层出不穷,但是都没有撼动Java的位置。可能是历史选择了Java,也可能是Java改变了历史,总之,Java无疑是一门成功的编程语言。这门语言之所以能如此成功,高性能语言虚拟机HotSpot功不可没。 客观地说,HotSpot VM是目前顶级的语言虚拟机之一,它的模板解释器是语言解释器的最终状态,除非有重大技术突破和方法论的改变,否则很难被超越。它的垃圾回收器也日臻完善,新的无停顿GC的出现标志着JVM正在迈向GC顶级俱乐部。它的即时编译器是权衡编译开销与应用吞吐量后得到的一个卓越且精湛的艺术品。 本书始于笔者博客上的系列文章,随着博文连载,便想将博文整理成册,以系统性地讨论HotSpot VM。鉴于OpenJDK社区将HotSpot VM分为运行时、编译器、垃圾回收器三个部分,本书也采用这种划分方式来组织内容。 本书读者对象 本书内容涉及较多的源码分析,所以除了需要读者具有基本的Java/JVM知识,也需要读者具有基本的C++语言常识。本书适合那些希望在Java语言方面有进一步提升的开发者,也适合任何对JVM底层感兴趣且想要一探究竟的开发者。同时,对编译器或垃圾回收器感兴趣的读者也能从中受益。 本书特色 本书既考虑到内容的广度也关注了技术的深度,详细描述了虚拟机的底层实现,并与上层Java语言或者库结合,以实用为目标展开介绍,同时还讨论了它们的深刻意义。 从内容广度的角度看,本书除了讨论耳熟能详的Java虚拟机技术外,还详细讨论了业界最新的通用虚拟机平台Graal VM、CDS/AppCDS/DynamicCDS、Instrumentation库、编译重放、非标准字节码、栈上替换,RTM锁、JIT编译器IR、JIT编译器可视化工具、编译逃离、EpsilonGC/ShenandoahGC/ZGC、G…