Java 虚拟机
一、Java 虚拟机简介
Java 虚拟机是整个Java 平台的基石,是Java 技术用以实现硬件无关与操作系统无关的关键部分,是Java 语言生成出极小体积的编译代码的运行平台,是保障用户机器免于恶意代码损害的保护屏障。Java 虚拟机可以看作是一台抽象的计算机。如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域。
当我们说“Java虚拟机”的时候,可能指以下三种不同的东西:
(1) 抽象规范。
(2) 一个具体的虚拟机实现。
(3) 一个运行中的虚拟机实例。
Java虚拟机抽象规范仅仅是个概念,不同的厂商有着不同的具体实现。当运行一个Java程序的同时,也就在运行一个Java虚拟机实例。每个Java程序都运行于某个具体的Java虚拟机实现的实例上。
二、Java 虚拟机体系结构
下面是JVM规范定义的标准结构:
Java虚拟机负责装载class文件并执行。每个Java虚拟机都有一个类装载器子系统,它根据给定的全限定名来装载class文件(类或接口)。每个Java虚拟机都有一个执行引擎,它负责执行那些包含在被装载类的方法中的指令。当Java虚拟机运行一个程序时,它需要内存来存储许多东西,如字节码,从已装载的class文件中得到的其他信息,程序创建的对象,传递给方法的参数,返回值,局部变量,以及运算的中间结果等等,Java虚拟机把这些东西都组织到内存空间中,便于管理。
注意:Java 虚拟机与Java 语言并没有必然的联系,它只与特定的二进制文件格式——Class 文件格式所关联,Class 文件中包含了Java 虚拟机指令集(或者称为字节码、Bytecodes)和符号表,还有一些其他辅助信息。