Loading

摘要: 执行引擎是 Java 虚拟机最核心的组成部分之一。「虚拟机」是相对于「物理机」的概念,这两种机器都有代码执行的能力,区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机执行引擎是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的 阅读全文
posted @ 2020-08-26 21:45 codeduck 阅读(1003) 评论(0) 推荐(0)
摘要: Java的编译期是一个模糊的概念,需要具体分析。 将 *.java文件转为 *.class的过程称为编译器的前端(前端编译)。例如:JDK的javac编译器。 把字节码( *.class文件) 转变为 本地机器码 的过程称为Java虚拟机的即时编译运行期(JIT编译器,Just In Time)。例 阅读全文
posted @ 2020-08-26 21:40 codeduck 阅读(5465) 评论(0) 推荐(3)
摘要: 深入理解Java虚拟机(类文件结构) 我们所编写的每一行代码,要在机器上运行最终都需要编译成二进制的机器码 CPU 才能识别。但是由于虚拟机的存在,屏蔽了操作系统与 CPU 指令集的差异性,类似于 Java 这种建立在虚拟机之上的编程语言通常会编译成一种中间格式的文件Class文件来进行存储。 一. 阅读全文
posted @ 2020-08-26 21:29 codeduck 阅读(2744) 评论(0) 推荐(0)
摘要: 目前主流的两款商用Java虚拟机(Hotspot、Open9)里,Java程序最初都是通过解释器(Interpreter)进行解释执行的。在javac编译过后产生的字节码Class文件:源码在编译的过程中,进行「词法分析 → 语法分析 → 生成目标代码」等过程,完成生成字节码文件的工作。然后在后面交 阅读全文
posted @ 2020-08-26 15:33 codeduck 阅读(650) 评论(0) 推荐(0)