深入理解Java虚拟机(第3版)

周志明

出版时间

2019-12-01

ISBN

9787111641247

评分

★★★★★

标签

编程

书籍介绍

内容介绍

这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典,繁体版在台湾也颇受欢迎。

自2011年上市以来,前两个版本累计印刷36次,销量超过30万册,两家主要网络书店的评论近90000条,内容上近乎零差评,是原创计算机图书领域不可逾越的丰碑。

第3版在第2版的基础上做了重大修订,内容更丰富、实战性更强:根据新版JDK对内容进行了全方位的修订和升级,围绕新技术和生产实践新增逾10万字,包含近50%的全新内容,并对第2版中含糊、瑕疵和错误内容进行了修正。

全书一共13章,分为五大部分:

第一部分(第1章)走近Java

系统介绍了Java的技术体系、发展历程、虚拟机家族,以及动手编译JDK,了解这部分内容能对学习JVM提供良好的指引。

第二部分(第2~5章)自动内存管理

详细讲解了Java的内存区域与内存溢出、垃圾收集器与内存分配策略、虚拟机性能监控与故障排除等与自动内存管理相关的内容,以及10余个经典的性能优化案例和优化方法;

第三部分(第6~9章)虚拟机执行子系统

深入分析了虚拟机执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎,以及多个类加载及其执行子系统的实战案例;

第四部分(第10~11章)程序编译与代码优化

详细讲解了程序的前、后端编译与优化,包括前端的易用性优化措施,如泛型、主动装箱拆箱、条件编译等的内容的深入分析;以及后端的性能优化措施,如虚拟机的热点探测方法、HotSpot 的即时编译器、提前编译器,以及各种常见的编译期优化技术;

第五部分(第12~13章)高效并发

主要讲解了Java实现高并发的原理,包括Java的内存模型、线程与协程,以及线程安全和锁优化。

全书以实战为导向,通过大量与实际生产环境相结合的案例分析和展示了解决各种Java技术难题的方案和技巧。

AI导读
核心看点
  • 从原理与实践双维度剖析JVM,涵盖内存管理、执行引擎、编译优化及并发。
  • 第3版大幅修订,新增近50%内容,修正旧版瑕疵,适配新版JDK技术特性。
  • 全书分五部分系统讲解,包含大量生产环境实战案例,解决Java底层技术难题。
适合谁读
  • Java后端开发工程师,希望深入理解底层机制以优化性能、排查故障。
  • 计算机专业学生或从业者,需系统掌握JVM内存模型、类加载及字节码执行原理。
  • 有Java基础但缺乏底层知识的技术人员,旨在突破瓶颈,提升架构设计能力。
读前提醒
  • 建议先掌握Java基础语法,再结合官方JDK源码或调试工具辅助理解抽象概念。
  • 后半部分涉及编译原理与并发模型,难度较高,可配合视频课程或查阅资料学习。
  • 重点关注内存溢出排查与GC调优章节,这些是日常开发中最具实战价值的部分。
读者共识
  • 公认的经典之作,内容详实且语言生动,是国内JVM领域不可逾越的标杆。
  • 部分章节如编译优化过于硬核,初学者可能感到吃力,建议二刷或结合实践消化。
  • 虽有个别读者认为更新速度略滞后于最新JDK,但核心原理讲解依然极具价值。

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "GC日志开头的“[GC”和“[Full GC”说明了这次垃圾收集的停顿类型,而不是 用来区分新生代GC还是老年代GC的。如果有“Full”,说明这次GC是发生了Stop-The-World 的"
  • "由于使用了准确式内存管理,Exact VM可以抛弃掉以前Classic VM基于handler的对象查找方式(原因是GC后对象将可能会被移动位置,如果地址为123456的对象移动到654321,在没有明确信息表明内存中哪些数据是reference的前提下,那虚拟机是不敢把内存中所有为123456的值改成654321的,所以要使用句柄来保持reference值的稳定),这样每次定位对象都少了一次间接查找的开销,提升执行性能。"
  • "至此,官方提供的JDK可以运行于Windows(不含Windows 9x)、Linux、Solaris和Mac OS平台上,支持ARM、x86、x64和Sparc指令集架构类型。"
  • "虽然Exact VM的技术相对Classic VM来说先进了许多,但是在商业应用上只存在了很短暂的时间就被更为优秀的HotSpot VM所取代,甚至还没有来得及发布Windows和Linux平台下的商用版本。"
  • "存储局部变量表、操作栈、动态链接、方法出口等信息。"
  • "老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC,经常会伴随至少一次的Minor GC(但非绝对的,在Parallel Scavenge收集器的收集策略里就有直接进行Major GC的策略选择过程)。Major GC的速度一般会比Minor GC慢10倍以上。"
  • "如果向CHA查询出来的结果是有多个版本的目标方法可供选择,则编译器"
  • "虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。"
作者简介
周志明(博士) 资深Java技术专家、机器学习技术专家和企业级开发技术专家,现任远光软件研究院院长。开源技术的积极倡导者和推动者,对计算机科学相关的多个领域都有深刻的见解,尤其是人工智能、Java技术和敏捷开发等,对虚拟机技术有非常深入的研究。 撰写了《深入理解Java虚拟机》《深入理解OSGi》《智慧的疆界》等多本著作,翻译了《Java虚拟机规范》等著作。其中《深入理解Java虚拟机》已累计印刷逾36次,总销超过30万册,成为原创计算机专业图书领域难以逾越的丰碑。
目录
前言
致谢
第一部分 走近Java
第1章 走近Java 2
1.1 概述 2

显示全部
用户评论
先打个4分怕周志明老师骄傲,读完再来评价。 读完改成5星,两个礼拜读完,比第二版增加了不少内容。
这本书就像一块风干的牦牛肉,营养丰富,但是难啃。我现在是抱着它舔了一遍,并且留下了一些牙印。远远不够。
不愧经典
20201023翻过第一遍,真是虽迟但到。。。新工作必须在jvm平台上进行开发,只好老老实实补上相关的技术背景。
写得太好了,国内难得不是四处拼凑的计算机读物,语言生动易懂
很好 非常催眠
周志明说话能不能抓住重点!能不能讲一个问题的时候就好好讲这个问题!每次涉及到核心问题的时候就说些花边新闻来打岔,要么就说到之后哪个章节再具体谈…拜托,别一个问题东讲一点西讲一点,不是所有读者都那么闲要跟着你搁这玩拼图游戏!
今年第一本大部头,着实“深入理解JAVA虚拟机”,难得的中文原创技术书籍。推荐
神书好顶赞!想起这本书的第二版是我大三时候买的,很多次上自习都带着它,陪着我坐过大学几乎每一个可以找到的自习室,最后被我翻得不成样子,毕业之后又从威海带去成都又去杭州最后回到成都,见证了我至今的整个职场生涯……而今天又看完了它的第三版,真是唏嘘感慨啊。
理论讲的很好,等我再看一遍补星
下载
收藏