《深入理解Java虚拟机(第3版)》样例代码&勘误
Go to file
2020-01-20 10:38:22 +08:00
lib init 2019-12-24 11:11:01 +08:00
src add indify 2020-01-17 15:41:58 +08:00
README.md Update README.md 2020-01-20 10:38:22 +08:00

《深入理解Java虚拟机第3版

  本工程为《深入理解Java虚拟机第3版》书中的样例代码以方便读者自行测试。部分代码需要在特定的虚拟机版本、参数下运行在代码前均已“VM Args”的注释进行标注。

  书中的勘误也会在本文中持续更新读者可通过issues提交新的勘误如对新版有任何建议也欢迎以issues或任何其他您方便的形式提出。

勘误列表:

  • Page 27到了JDK 10HotSpot又重构了Java虚拟机的垃圾收集器接口 Java Virtual Machine 【Compiler】 Interface
    更正到了JDK 10HotSpot又重构了Java虚拟机的垃圾收集器接口 Java Virtual Machine 【Garbage】 Interface

  • Page 37譬如【Eclipst】 CDT或者NetBeans来进行的话
    更正譬如【Eclipse】 CDT或者NetBeans来进行的话

  • Page 23813: iload_1 后的注释应该是字节码第14行的

    13: iload_1 // 保存x到returnValue中此时x=2
    14: istore 4

    改为:

    13: iload_1
    14: istore 4 // 保存x到returnValue中此时x=2

  • Page 254:算术指令用于对【两个操作数栈上的值】进行某种特定运算
    对语序修改以避免歧义:算术指令用于对【操作数栈上的两个值】进行某种特定运算

  • Page 25913 astore_3 后注释Taget是笔误应为Target

  • Page 265/266在266页正文中出现两次注释一其中第一个注释是265页才对应该是排版问题请编辑再版时注意。

  • Page 290用在IntelliJ 【IDE】、Eclipse这些IDE上做HotSwap……
    更正: 用在IntelliJ 【IDEA】、Eclipse这些IDE上做HotSwap……

  • Page 312代码实例中出现三处【gay】譬如Father gay = new Son(); 均应为【guy】这个不影响代码运行只是不太雅观。

  • Page 317产生这种差别产生的根本原因是Java语言在编译期间【却】已将println(String)方法完整的符号引用。
    更正产生这种差别产生的根本原因是Java语言在编译期间【就】已将println(String)方法完整的符号引用。

  • Page 322由于注解中John Rose博客文章中的代码托管网站Kenai.com已经关闭为了便于读者获取INDY工具我上传了一份到本仓库中(源码在src/indify目录)。此文件版权归原作者John Rose所有。编辑在更新勘误时可跳过此条

  • Page 348:通常解决【类】问题有以下几种途径
    更正:通常解决【此类】问题有以下几种途径

  • Page 372譬如将【代码清单10-2】稍微修改一下变成下面代码清单10-7这个样子
    更正譬如将【代码清单10-4】稍微修改一下变成下面代码清单10-7这个样子

  • Page 396【图11-2】和【图11-3】都仅仅是描述了客户端模式虚拟机的即时编译方式
    更正【图11-3】和【图11-4】都仅仅是描述了客户端模式虚拟机的即时编译方式

以下勘误内容已在第1次重印版2019-12-27日修正


  • 前言部分读者反馈信箱understandjvm@gmail.com
    更正由于这个信箱由于一直只收未发刚印刷后收到Google的通知此账号已自动作废。而且根据Google规定作废后无法注册同名邮箱。下次重印将修改为本工程地址:https://github.com/fenixsoft/jvm_book
  • Page 9支持HTTP 2客户【单】API等91个JEP
    更正支持HTTP 2客户【端】API等91个JEP
  • Page 64在【代码清单2-8】里笔者借助了CGLib……
    更正在【代码清单2-9】里笔者借助了CGLib……
  • Page 368: 【ArrayList<int>】与ArrayList<String>其实是同一个类型
    更正【ArrayList<Integer>】与ArrayList<String>其实是同一个类型