JAVA虚拟机的体系结构
来源:互联网 发布:装配式 知乎 编辑:程序博客网 时间:2024/05/17 01:11
在Java虚拟机的规范中定义了一系列的子系统、内存区域、数据类型和使用指南。这些组件构成了Java虚拟机的内部结构,他们不仅仅为Java虚拟机的实现提供了清晰的内部结构,更是严格规定了Java虚拟机实现的外部行为。
每一个Java虚拟机都由一个类加载器子系统(class loader subsystem),负责加载程序中的类型(类class和接口interface),并赋予唯一的名字。每一个Java虚拟机都有一个执行引擎(execution engine)负责执行被加载类中包含的指令。
程序的执行需要一定的内存空间,如字节码、被加载类的其他额外信息、程序中的对象、方法的参数、返回值、本地变量、处理的中间变量等等。Java虚拟机将 这些信息统统保存在数据区(data area)中。虽然每个Java虚拟机的实现中都包含数据区,但是Java虚拟机规范对数据区的规定却非常的抽象。许多结构上的细节部分都留给了 Java虚拟机实现者自己发挥。不同Java虚拟机实现上的内存结构千差万别。一部分实现可能占用很多内存,而其他以下可能只占用很少的内存;一些实现可 能会使用虚拟内存,而其它的则不使用。这种比较精炼的Java虚拟机内存规约,可以使得Java虚拟机可以在广泛的平台上被实现。
数据区中的一部分是整个程序共有,其他部分被单独的线程控制。每一个Java虚拟机都包含方法区(method area)和堆(heap),他们都被整个程序共享。Java虚拟机加载并解析一个类以后,将从类文件中解析出来的信息保存与方法区中。程序执行时创建的 对象都保存在堆中。
当一个线程被创建时,会被分配只属于它自己的PC寄存器“pc register”(程序计数器)和Java堆栈(Java stack)。当线程不调用本地方法时,PC寄存器中保存线程执行的下一条指令。Java堆栈保存了一个线程调用方法时的状态,包括本地变量、调用方法的参数、返回值、处理的中间变量。调用本地方法时的状态保存在本地方法堆栈中(nativemethod stacks),可能再寄存器或者其他非平台独立的内存中。
Java堆栈有堆栈块(stack frames (orframes))组成。堆栈块包含Java方法调用的状态。当一个线程调用一个方法时,Java虚拟机会将一个新的块压到Java堆栈中,当这个方法运行结束时,Java虚拟机会将对应的块弹出并抛弃。
Java虚拟机不使用寄存器保存计算的中间结果,而是用Java堆栈在存放中间结果。这是的Java虚拟机的指令更紧凑,也更容易在一个没有寄存器的设备上实现Java虚拟机
- JAVA虚拟机的体系结构
- Java虚拟机的体系结构
- Java虚拟机的体系结构
- Java虚拟机的体系结构
- Java虚拟机的体系结构
- 5.3 Java虚拟机的体系结构
- 对Java虚拟机体系结构的理解
- Java虚拟机的体系结构和内存模型
- java虚拟机体系结构分析
- Java虚拟机体系结构概述
- Java虚拟机体系结构
- Java虚拟机体系结构
- Java虚拟机体系结构
- Java虚拟机及体系结构
- Java 虚拟机体系结构
- Java虚拟机体系结构
- Java 虚拟机体系结构
- Java 虚拟机体系结构
- java基础知识(六) 数组中copy、排序、查找的应用
- 转载 CString 操作指南
- C++编写代码实现任意位数的水仙花判定
- iphone开发之获取系统字体
- lcd驱动编写代码
- JAVA虚拟机的体系结构
- 查看Maximo Webservice相关文件的URL
- iphone开发之获取系统背光灯亮度
- 学习一门新语言的基本步骤和方法
- C# 窗体程序,使用控制台输出调试信息
- 敏捷开发中的MoSCoW优先级排序方法
- poj 3620(DFS)
- 跪求《简洁订餐系统》的相关文档
- flash游戏开发01_ flash develop 安装配置