本系列基于JDK7
JVM体系结构
主要包含两个子系统和两个组件。
- Class Loader(类加载器)子系统, Execution Engine(执行引擎)子系统。
- Runtim Data Area(运行时数据区域)组件,Native Interface(本地接口)组件。
JVM体系结构图
Class Loader
类加载器负责加载Java类的字节代码到Java虚拟机中,可以根据指定的类名(如java.lang.Object
)来装载class文件的内容到Runtime Data Area中的Method Area(方法区域)。Java程序员可以extends java.lang.ClassLoader
类来写自己的Class Loader。Execution Engine 执行引擎
执行引擎是JVM最核心的组成部分之一,其主要是执行class中的指令,任何JVM实现的核心是Execution Engine。执行引擎可以把Java字节码转为机器能识别的字节码,并调用机器的指令进行计算等,不同JVM的执行效率很大程度决定于他们各自实现的Execution Engine的好坏。“虚拟机”的执行引擎与“物理机”的执行引擎是比较类似的,这两种机器都有执行代码能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎是自己实现的,因此虚拟机可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令。Java Native Interface(JNI)本地接口
Java本地接口(Java Native Interface,JNI)是一个标准的Java API,它支持将Java代码与使用其他编程语言编写的代码相集成,例如可以调用Native语言函数C\C++等。JNI是java与其它编程语言交互的接口。Runtime Date Area 运行时数据区
这个组件就是JVM的内存区域,下面对这部分进行详细介绍。这是了解JVM内存模型的重要部分。