Java虚拟机字节码执行引擎

运行时栈帧结构

 

 

 

1.局部变量表

 

 

 

 

 

 

 

 

 上的

在虚拟机使用

   关于局部变量表,还有一点可能会对实际开发产生影响,就是局部变量不像前面介绍的类变量那样存在”准备阶段“。类变量有两次赋初始值的过程,一次在准备阶段,赋予系统初始值;另外一次在初始化阶段,赋予程序员定义的初始值。因此,即使在初始值阶段程序员没有为类变量赋值也没有关系,类变量仍然具有一个

 

 

操作数栈

 

 

动态连接

每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用,持有这个引用是为了支持方法调用过程的动态连接。Class

 为动态连接。

 

方法返回地址

 

附加信息

 

方法调用

 

解析

 

 

 

分派

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

手段来获得更高的性能。

 

动态类型语言支持

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

基于栈上的字节码解释执行引擎

 虚拟机是如何调用方法的内容已经讲解完毕,下面我们探讨虚拟机是如何执行方法中的字节码指令的。上文提到过,许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,那么在解释执行时,虚拟机执行引擎是如何工作的。

 

解释执行

 

 

基于栈的指令集与基于寄存器的指令集

 

 

 

 

 

基于栈的解释器执行过程

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值