一、JVM的体系结构

一、在Java虚拟机的规范中定义了一系列的子系统、内存区域、数据类型和使用指南。
这些组件构成了Java虚拟机的内部结构,它们不仅仅为Java虚拟机的实现提供了清晰的内部结构,更是严格规定了Java虚拟机实现的外部行为。
JVM体系结构
1、每一个虚拟机都由一个类加载子系统(class loader subsysteam),负责加载程序中的类型(类和接口),并赋予唯一的名字。每一个jvm都有一个执行引擎,负责执行被加载类中包含的指令。

2、程序的执行需要一定的内存空间,如字节码、被加载类的其他额外信息、程序中的对象、方法的参数、返回值、本地变量、处理的中间变量等。jvm将这些信息统统保存在数据区中。虽然每个jvm的实现中都包含数据区,但是jvm虚拟机规范对数据区的规定却非常的抽象。许多结构上的细节部分都保留给了jvm实现者自己发挥。不同Java虚拟机实现上的内存结构千差万别。一部分实现可能占用很多内存,而其他以下可能只占用很少的内存;一些实现可能会使用虚拟内存,而其他的则不使用。这种比较精炼的Java虚拟机内存规约,可以使得Java虚拟机可以在广泛的平台上被实现。

3、数据中的一部分是整个程序共有,其他部分被单独的线程控制。每一个jvm都包含方法区(method area)和堆(deap)。它们都被整个程序共享。jvm加载并解析一个类以后,将从类文件中解析出来的信息保存在方法区中。程序执行时创建的对象都在堆中。
在这里插入图片描述
4、当一个线程被创建时,会被分配只属于它自己的PC寄存器“pc register”(程序计数器)和Java堆栈(Java stack)。当线程不调用本地方法时,PC寄存器中保存线程执行的下一条指令。Java堆栈保存了一个线程调用方法时的状态,包括本地变量、调用方法的 参数、返回值、处理的中间变量。调用本地方法时的状态保存在本地方法堆栈中(native method stacks),可能在寄存器或者其他非平台独立的内存中。
在这里插入图片描述
5、Java堆栈有堆栈块(stack frames (or frames))组成。堆栈块包含Java方法调用的状态。当一个线程调用另一个方法时,jvm会将一个新的块压到Java堆栈中,当这个方法运行结束时,jvm会将对应的块弹出并抛弃。

6、jvm不使用寄存器保存计算的中间结果,而是用Java堆栈来存放中间结果。这使得jvm的指令更紧凑,也更容易在一个没有寄存器的设备上实现jvm。另外,jvm这种基于栈的体系结构,也有助于运行时某些虚拟机实现的动态编译器和即时编译器的代码优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值