每一个Java虚拟机都由一个类加载器子系统(class loader subsystem),负责加载
程序中的类型(类和接口),并赋予唯一的名字。
每一个Java虚拟机都有一个执行引擎(execution engine)负责执行被加载类中包含的指令。
程序的执行需要一定的内存空间,如字节码、被加载类的其他额外信息、程序中的对
象、方法的参数、返回值、本地变量、处理的中间变量等等。Java虚拟机将 这些信息
统统保存在数据区(data areas)中。
每一个Java虚拟机都包含方法区(method area)和堆(heap),他们都被整个程序共
享。Java虚拟机加载并解析一个类以后,将从类文件中解析出来的信息保存与方法区
中。程序执行时创建的 对象都保存在堆中。
Java源程序经编译后生成字节码,它类似于汇编指令,但不是任何一种具体处理器的汇编指令。
字节码是由Java虚拟机解释执行的,java虚拟机是一项技术规范,是一台可以执行java字节码的机器。
也是一个能规范地运行java字节码的操作平台。
Java虚拟机处于Java编译程序和硬件平台之间,只要每一种平台建立了相应版本的虚拟机,就可以解释执行字节码,虚拟机将每一条要执行的字节码翻译成特定及其平台上的机器码,然后在特定的机器上运行。