《深入理解Java虚拟机》第2版和第3版的区别,看过第2版还有必要买第3版吗?

博主前言

Hello,我是oxye~ 在Java界,《深入理解Java虚拟机 JVM高级特性与最佳实践》是一本经典的书籍了,很多程序员都会买一本,但看不看又是另一回事儿了。

我一开始看也是迷迷糊糊的,因为初级程序员更多的是应用语言,不怎么在乎底层,也不想啃基础太深。

随着不断学习,打扎实基础的过程中,丰富了技术储备,看了很多源码,也从初级变成高级了,再回过头看这本书时,就会顺利很多,也会学到很多知识,不仅加深了自己对Java的理解,也帮我解决了不少实际问题,例如jvm参数调整、阅读源码时理解类或变量等的加载时机和范围等等。。

在2020年之前,大家看的都是封面为蓝色字体的第二版,而第二版是以JDK 7为基础讲的,但是市面上流行的是JDK8,7到8的变化很大,使得我不能只看这本书,还要去网上找更多基于JDK8的JVM知识点。

所幸作者在2019年12月出版了基于JDK12了,我买到的书是2020年3月第3次印刷。JDK版本跳跃太大没事,因为8之后的版本会迭代很快,变动没6到8这么大。

这边主要记录一下再次阅读这本神作所发现的,与第二版不同的地方。
在这里插入图片描述

本书依然是五个部分

第一部分 走近Java

第1章 走近Java

介绍Java技术发展史、编译OpenJDK。
第3版就是延续了第2版,续写了Java技术发展史,编译的JDK从7变成12。
在这里插入图片描述

第二部分 自动内存管理

第2章 Java内存区域与内存溢出异常

介绍内存如何划分、各自的作用等。
主要变化是JDK8的方法区实现不再是永久代(Permanent Generation),改为元空间(Meta-space),元空间并不在虚拟机中,而是使用本地内存。

P44 2.2.5 方法区 中对概念进行了修改,即方法区实现方式从永久代变为元空间
P61 2.4.3 方法区和运行时常量池溢出 中,原本可以制造的方法区内存溢出,在JDK8后被解决,因为元空间在本地内存,实际中本地内存时比jvm内存大很多的。

也可参考Java8内存模型—永久代(PermGen)和元空间(Metaspace)

第3章 垃圾收集器与内存分配策略

介绍了垃圾收集的算法和几款垃圾收集器的特点和运作原理。
新增新章节:3.4.4 记忆集与卡表3.4.5 写屏障3.4.6 并发的可达性分析3.6 低延迟垃圾收集器3.7 选择适合的垃圾收集器
增加的内容是JDK11、12中新出现的ZGC、Shenandoah、Epsilon等,鉴于大家都在用JDK8,可先了解一下。

在这里插入图片描述

第4章 虚拟机性能监控、故障处理工具

介绍了一些JDK自带的命令行工具、可视化工具。众多工具随版本更新也发生了改变,新增了JDK9中新加入的JHSDB、增加了JFR和JMC的工作原理和使用方法的介绍等。
新增章节 4.3.1 JHSDB 4.3.4 Java Mission Control 4.4 HotSpot虚拟机插件及工具

另外我私自推荐了解一下Alibaba的Arthas Arthas 用户文档,阿尔萨斯是一款对用户更友好(封装更好)的程序,可以代替直接使用jps、jstat等原生命令排查问题。
在这里插入图片描述

第5章 调优案例分析与实战

第2版中的经验依然有用,但是第3版对案例部分进行了更新,并增加了 5.2.8 由安全点导致长时间停顿

第三部分 虚拟机执行子系统

第6章 类文件结构

随着JDK的更新,类文件结构也变化了。这章内容较为琐碎,适合查阅大于适合阅读。

第7章 虚拟机类加载机制

JDK的升级当然对类加载的步骤产生了影响。

例如P264 7.2 类加载的时机 中,5种情况变成6种,因为JDK 8新特性,一些接口可以有默认方法,当接口实现类被初始化,接口要在实现类之前进行初始化。
在这里插入图片描述

增加了7.5 Java模块化系统
JDK 9 出现的模块化系统,对已有概念影响较大,它改变了类加载流程、双亲委派模型等,具体内容参考7.5章节前后的描述。
在这里插入图片描述

第8章 虚拟机字节码执行引擎

变化不大。

第9章 类加载及执行子系统的案例与实战

9.2 案例分析 升级了案例分析内容。
9.3 实战:自己动手实现远程执行功能 中提到了Alibaba的Arthas Arthas 用户文档,这是个更好用的工具,可以远程调试代码、发现运行问题等,可以代替一些JDK原生功能(其实就是封装了原生功能)。
在这里插入图片描述

第四部分 程序编译与代码优化

这部分标题名改的不少,但是换汤不换药。
在这里插入图片描述

第10章 前端编译与优化

首先名称从第二版的 早期(编译期)优化 变成了 前端编译与优化。
重写了10.3.1 泛型

第11章 后端编译与优化

名称从第二版的 晚期(运行期)优化 变成了 前端编译与优化。
新增11.3 提前编译器11.5 实战:深入理解Graal

第五部分 高效并发

第12章 Java内存模型与线程

重写了原有的对Java内存模型部分过时和过于晦涩的描述,增加了面向Java未来基于协程的新并发模型的介绍。

优化了部分概念描述,新增12.5 Java与协程

第13章 线程安全与锁优化

基本没变

提供其他优秀作者的链接:

作为写完上面,想好标题,再去百度自己标题的时候才发现。。

作者why说的很多点我都感同身受,下面这点我单独拎出来,不为别的,就是觉得网上新壶装老酒的文章太多了(虽然我也有写过。。),如果有明确有源头的知识,先直接看源头吧

其实,从我入行到现在,4 年时间,每年我都能看到“新”的 JVM 的文章出现。而这些“新”的 JVM
文章里面装的都是一些老酒。当然我不是说这样不好。这样没有问题,每年的“新”文章都是别人看了相关知识后自己总结出来的,分享了出来,而我们看到了也是可以温故而知新的,这样是双赢。只是,我们为什么不直接从源头看起呢。源头说来说去也不外乎就那几本书而已,其中就包含文章说的这本。

深入理解java虚拟机第三版怎么样??看过第二版还有必要买第三版吗?

《深入理解Java虚拟机》第2版挖的坑终于在第3版中被R大填平了

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值