每个使用Java的开发人员都知道,JRE最重要的元素就是Java虚拟机(JVM),但许多开发人员对于JVM是如何运行的并不了解,因为就算你没有深入了解JVM,你一样可以开发出一些优秀的应用和库,不过要是你了解了JVM,那对你理解Java就会有很大的帮助
在国内,有关Java API、Java语言语法及第三方框架的技术资料和书籍非常多,但有关Java虚拟机的资料却很少,不过少并不意味着没有,比如本文要和大家推荐的这本书,就是一本难得的原生中文书籍——《深入理解Java虚拟机 – JVM高级特性与最佳实践 》
- 豆瓣评分8.9,好评如潮
- Java领域公认的经典著作和超级畅销书
如果你有留意程序员书库的【计算机书籍每周销量排行】,你就不难发现这本书基本每周都会上榜;而且第1版在两年内就印刷近10次,由此可见其销量有多么惊人。
这是一本关于JVM的经典书籍,共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
阅读路线
第一部分:从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、模块化,以及JDK的编译,这对理解书中后面内容有重要帮助。
第二部分:讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见虚拟机监控与故障处理工具的原理和使用方法。
第三部分:分析了虚拟机的执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎。
第四部分:讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、HotSpot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析JIT编译的数据和结果;
第五部分:探讨了Java实现高效并发的原理,包括JVM内存模型的结构和操作;原子性、可见性和有序性在Java内存模型中的体现;先行发生原则的规则和使用;线程在Java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。
第二版有何改进?
有的人可能已经读过第1版了,想知道第二版有哪些改进,这边我们也帮大家整理出来了:
- 技术平台从JDK 1.6提升至JDK 1.7
- 对于功能点的讲解变为直接使用OpenJDK中的HotSpot源码或者JIT编译器生成的本地代码
- 增加了许多对处理JVM常见问题技能的讲解,包括如何分析GC日志、如何分析JIT编译器代码优化过程等。
- 新增许多处理JVM问题的实践案例
- 最后就是修正了一些第一版中的错误之处
豆瓣书评
@ Gabriel Fu:难得的优秀的原生中文书籍,中间没有翻译这一层感觉好很多,读起来比外文原版书也更轻松 @ 二十而立:浅显易懂。最重要的是开启一扇理解虚拟机的大门。内存管理机制与Java内存模型、高效并发这三章是特别实用的。 @ 匿名:知识点覆盖面广,原理解释透彻,含有大量Demo案例,是一本具有相当深度的作品。美中不足的是概念的轻重顺序不够有条理,专有名词不加解释,甚至出现相同概念使用不同专有名词的情况,可能也是干货太多的副作用吧,总的来说瑕不掩瑜,jvm门槛不低,作者做到了深入浅出,功力确实不一般。 @ 散关清渭:之前也看过第一版 第二版比第一版有不少增改 主要是G1 这部分多了一章内容 还是与时俱进的 挺好~~~ @匿名:作者写的非常好,深入浅出的讲解了虚拟机的各个部分。是国内计算机出版难得的好书。
写在最后
总而言之,这本书值得你去多次研读,让你站在一个更高的角度去理解Java开发。虽说网上有很多JVM资料,但内容鱼龙混杂,看太多可能还有反效果,所以想要系统的学习一门知识,最简单的方式最好还是书籍