vlambda博客
学习文章列表

深入JVM,这本书讲透了G1回收的原理和实现!


前几年,图灵在R大(RednaxelaFX/莫枢)的大力推荐下,引进了一本日系技术书《垃圾回收的算法与实现》(下文简称GC书),一直关注图灵的读者可能对这本书还有些印象。

深入JVM,这本书讲透了G1回收的原理和实现!

GC书分为“算法篇”和“实现篇”两大部分,介绍了标记-清除算法等9种重要的GC基础算法,以及GCPython4种语言处理程序中的具体实现。
R大的话说,这本书非常适合用于入门 —— 它既系统地介绍了GC的经典基础算法(及其若干变种),又贴近现实剖析了一些实用系统中的GC实现,在抽象与具体,理论与实现之间找到了一个不错的平衡。
GC 书实现篇的作者叫作中村成洋。他因为偶然的机会对 GC 产生浓厚兴趣,本人却说不清为何喜欢 GC 。被人追问原因时,总是回答“是缘分”。
  (中村成洋)
深入JVM,这本书讲透了G1回收的原理和实现!

中村是CRubycommitter,现在仍每天致力于GC的改善。

GC的原稿中,有一章是关于“HotSpotVM的实现”,但因为时间关系,没来得及出版。GC书正式出版后,中村才继续写作这部分。

一开始,他计划只介绍G1GC的实现,但是在写作过程中渐渐改变了想法,觉得还是先写一些算法原理更有助于读者理解,所以又开始埋头写G1GC的算法原理。

于是,就有了今天我们要介绍的这本 深入 Java 虚拟机 JVM G1GC的算法与实现
深入JVM,这本书讲透了G1回收的原理和实现!

【日】中村成洋 | 著

  吴炎昌 杨文轩 | 译

GC书一样,这本书由“算法篇”和“实现篇”两大部分构成。

在算法篇中,这本书探讨了OpenJDK 7中引入的GC算法——G1GC(Garbage First Garbage Collection)的原理。G1GC中有一个很大的谜团,那就是GC暂停处理的预测暂停时间。算法篇用了数十页的篇幅来揭示它。

关于G1GC的资料,具有代表性的是由David Detlefs等人所写的英语论文 Garbage-First GarbageCollection 。但是那篇论文非常深奥晦涩,只读一遍是无法透彻理解的。 
中村初次接触那篇论文是在2007年。当时他的英语阅读能力有限,也不怎么了解GC,所以没读多少就放弃了。3年后,他掌握了一定程度的GC知识,所以再次挑战了那篇论文 —— 结果仍然没能彻底理解。 
在那之后的半年多里,中村读完论文读源码,读完源码又去读论文,如此反复,终于彻底理解了全部内容。对于他来说,理解G1GC的过程可以称得上“荆棘之路”。 
《深入Java虚拟机》的算法篇,比原始论文更加详细地介绍了G1GC的算法原理和执行过程。对于自己以前理解起来比较困难的地方,中村还特意进行了详细的说明,因此内容要比原始论文易于理解。即使是不太了解GC的读者,理解起来也没有什么问题。

(算法篇目录)

深入JVM,这本书讲透了G1回收的原理和实现!

深入JVM,这本书讲透了G1回收的原理和实现!


左右滑动查看更多


在实现篇中,中村又详细剖析了HotSpotVM的源码。

HotSpotVM实现了包括G1GC在内的多种GC算法。不过这些算法并非凭空而来,而是基于HotSpotVM中专为GC算法设计的框架实现的。因此,中村会带大家去了解作为框架之一的对象管理功能。得益于对象管理功能的接口,多种GC算法之间的切换成为可能,而且新GC算法的添加也变得更加简单。

之后,大家还会了解对象的数据结构和内存分配器。有关分配器的讲解会稍微涉及对操作系统的调用。

除此以外,大家还将了解G1GC中用到的线程管理方法。HotSpotVM内部同样也有能够在GC过程中简单地操作线程的框架,各种GC算法都是通过这个框架来实现并行GC和并发GC的。

再后面就是G1GC的具体实现,讲解了G1GC的并发标记和转移,以及调度程序的实现。这部分尽量省略了算法篇中已经详细讲解过的内容,着重讲解前面没有涉及的内容。

对于G1GC,中村曾有过不少疑问。比如“G1GC是如何实现准确式GC的”和“实现了这么多GC不会导致写屏障变慢吗”,等等。因此,他研究了G1GC的实现方式,并将得到的结果放在了本书的最后两章。
(实现篇目录)
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!

左右滑动查看更多

中村写作本书的目的在于将他走过的“荆棘之路”变成更多人易于踏上的坦途。希望各位读者轻松愉快地走过这条坦途,用最短的时间掌握G1GC

| 图书特色

图文并茂

这本书带点图解系列的风格,特别是算法篇,清晰的配图让GC过程更直观、易懂。

(转移专用记忆集合的构造)

深入JVM,这本书讲透了G1回收的原理和实现!

(GC单位时间内的GC暂停时间上限)

深入JVM,这本书讲透了G1回收的原理和实现!
(mutator和GC的执行关系)
深入JVM,这本书讲透了G1回收的原理和实现!
通俗易懂

中村在写作中不仅融入了自己的独到见解和研究成果,还巧用“打比方”的手法深入浅出。比如在讲解Java监视器时,中村将其比喻为滑雪板租赁商店,在后面讲解监视器的实现时也一直使用这个例子帮助读者加深理解。

(监视器与租赁商店)

深入JVM,这本书讲透了G1回收的原理和实现!
源码剖析
算法篇剖析 HotSpotVM 源码时,只列出主流程的代码,并附上细致解释,易读性高。

(ConcurrentMark类的实现)

深入JVM,这本书讲透了G1回收的原理和实现!

生动有趣
书中专栏插入了几幅中村自己画的小漫画,灵魂画风,却极其传神。

(保守式GC与准确式GC)

(注意此图涉及文末福利)

深入JVM,这本书讲透了G1回收的原理和实现!

*保守式GC:不能识别指针和非指针的GC。

*准确式GC:能够正确识别指针和非指针的GC。

读者对象
这本书适合所有对JVM、GCJDK内存管理感兴趣的读者阅读。
这本书可以说是对GC书的补充,弥补了GC书未深入讲解并行GC/并发GC,未涉及JVM GC的不足,相对来说更加贴合Java从业者。只要读过GC书,应该就能理解本书的内容。
不过即使没有读过,只要具备一些GC的基础知识,阅读本书也不成问题。具体来说,需要事先掌握标记-清除GC、复制GC和增量GC等的基础算法。
如果不具备任何GC相关的知识,而且也不打算阅读GC书,那么建议先自己在网络上简单了解一下GC
本书试读
并发标记
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!
深入JVM,这本书讲透了G1回收的原理和实现!

左右滑动查看更多


作为Javaer必拜山头之一,JVM一直带有那么一些神秘感。希望这本书能帮助大家进一步打破这种神秘感,知其然并知其所以然,了解底层又不拘泥于底层,写起代码来更加得心应手。

深入JVM,这本书讲透了G1回收的原理和实现!

末福利

留言主题:谈谈你对JVM或GC的理解


精选留言中随机抽取1位读者,
赠送1本《深入Java虚拟机:JVM G1GC的算法与实现》纸质书。


日系技术书特有小福利又来啦!


符合留言主题,且答出专栏小漫画中两句台词是什么梗 (出自什么作品、什么角色) 的读者, 随机抽取1位,
赠送1本《深入Java虚拟机:JVM G1GC的算法与实现》纸质书。


统计截止时间:1 月 17日 21:00。


图 灵 社 群