摘要: 一条 Java 虚拟机指令由一个特定操作的操作码和零至多个操作所使用到的操作数所构成。 虚拟机指令 = 操作码 + 操作数。 其中,操作码值分别为 254(0xfe)和 255(0xff),助记符分别为 impdep1 和 impdep2的两个操作码是作为“后门”和“陷阱”出现,目的是在某些硬件和软 阅读全文
posted @ 2018-12-19 20:21 陈树义 阅读(2131) 评论(0) 推荐(0) 编辑
摘要: 我们花了几天的时间来阅读《Java虚拟机规范》,了解要实现一个虚拟机应该包括什么内容。通过这么一次阅读,我们大致了解了虚拟机规范的内容。 第1章。对Java虚拟机进行了一些简单的介绍。 第2章。介绍了虚拟机的结构,以及一些异常体系以及字节码指令集。可以说是规范的重点内容。 第3章。介绍了编译器是如何 阅读全文
posted @ 2018-12-19 20:21 陈树义 阅读(1758) 评论(0) 推荐(0) 编辑
摘要: 如果你还没下载《Java虚拟机规范》这本书,那么先点击 "这里下载" 再一块儿看吧。 前言 Java 虚拟机是一个抽象化的机器,整个规范中提及的 Java 虚拟机都是抽象化的概念,而不是特指 Oracle 或者其他某一间公司的 Java 虚拟机实现。 可以看到JVM其实就是一个虚拟机的机器,与我们的 阅读全文
posted @ 2018-12-19 20:20 陈树义 阅读(2255) 评论(0) 推荐(2) 编辑
摘要: 本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现。 记住:JVM规范是一种高度抽象行为的描述,而不是具体虚拟机的实现。 所有在虚拟机规范之中没有明确描述的实现细节,都不应成为虚拟机设计者 阅读全文
posted @ 2018-12-19 20:20 陈树义 阅读(4092) 评论(3) 推荐(1) 编辑
摘要: Oracle 的 JDK 包括两部分内容:一部分是将 Java 源代码编译成 Java 虚拟机的指令集的编译器,另一部分是用于Java 虚拟机的运行时环境。 第一部分应该说的是 Javac 这个前置编译器,用于将Java源代码编译成字节码。第二部分是说 JIT 即时编译器,用于在JVM运行时进行进一 阅读全文
posted @ 2018-12-19 20:20 陈树义 阅读(1241) 评论(0) 推荐(0) 编辑
摘要: 这一章节讲的是字节码的整个组成格式,读懂了这一章,就读懂了字节码文件。对于这一章的学习,我更推荐作为工具书去查找。最好是找一个最简单的Hello World例子,一个字节一个字节去分析其含义。在分析过程中,把这个章节当成工具来查询每个字节的含义。 我写了一篇文章来带你一个字节一个字节分析,有兴趣的可 阅读全文
posted @ 2018-12-19 20:20 陈树义 阅读(1726) 评论(0) 推荐(0) 编辑
摘要: 加载是根据特定名称查找类或接口类型的二进制表示(Binary Representation),并由此二进制表示创建类或接口的过程。 加载,就是指去寻找类或接口的过程。 链接是为了让类或接口可以被 Java 虚拟机执行,而将类或接口并入虚拟机运行时状态的过程。 链接,就是将类或接口与JVM链接起来的过 阅读全文
posted @ 2018-12-19 20:20 陈树义 阅读(1711) 评论(0) 推荐(0) 编辑
摘要: 博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech 许多人知道类加载机制、JVM内存模型,但他们可能不知道什么是《Java虚拟机规范》。对于Java开发来说,《Java虚拟机规范》才是最为官方、准确的一个文档,了解这个规范可以让我们更深入地理解JVM。我们平常说的JVM其实更 阅读全文
posted @ 2018-12-19 20:01 陈树义 阅读(11740) 评论(3) 推荐(3) 编辑