分类: Android平台
2016-04-13 22:24:23
构成类文件可执行部分的字节码实际上是针对特定类型的计算机 ― JVM ― 的机器码。它被称为 虚拟机,因为它被设计成用软件来实现,而不是用硬件来实现。每个用于运行 Java 平台应用程序的 JVM 都是围绕该机器的实现而被构建的。
这个虚拟机实际上相当简单。它使用堆栈体系结构,这意味着在使用指令操作数之前要先将它们装入内部堆栈。指令集包含所有的常规算术和逻辑运算,以及条件转移和无条件转移、装入/存储、调用/返回、堆栈操作和几种特殊类型的指令。有些指令包含立即操作数值,它们被直接编码到指令中。其它指令直接引用常量池中的值。
尽管虚拟机很简单,但实现却并非如此。早期的(第一代)JVM 基本上是虚拟机字节码的解释器。这些虚拟机实际上 的确相对简单,但存在严重的性能问题 ― 解释代码的时间总是会比执行本机代码的时间长。为了减少这些性能问题,第二代 JVM 添加了 即时(just-in-time,JIT)转换。在第一次执行 Java 字节码之前,JIT 技术将它编译成本机代码,从而对于重复执行提供了更好的性能。当代 JVM 的性能甚至还要好得多,因为使用了适应性技术来监控程序的执行并有选择地优化频繁使用的代码。