Java虚拟机学习笔记(字节码执行引擎)

本文详细介绍了Java中方法调用的过程,包括解析调用和分派机制,并深入探讨了基于栈的字节码解释执行引擎的工作原理,以及局部变量表、操作数栈等栈帧结构组件的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行时栈帧结构

 

1.局部变量表 null  JIT编译器优化
2.操作数栈  LIFO
3.动态链接            |
4.方法返回地址    | 栈帧信息
5.附加信息            |

——————————————————————————————————

方法调用

 

1.解析调用 

 

符号引用 静态、私有、实例构造器、父类方法 final 非虚方法

 

2.分派

 

1.静态分派 
虚拟机(编译器)在重载时是通过参数的静态类型而不是实际类型作为判断
静态类型在编译器是可期的,且选择更加适合的版本
2.动态分派
重写  invokevirtual 运行期确定接受者实际类型
3.单分派与多分派
方法的接收者与方法的参数统称为方法的宗量。
单分派 一宗量  多分派  多余一个宗量
Java语言静态多分派,动态单分派
4.虚拟机动态分派的实现
虚方法表 接口方法表 |  内联缓存 守护内联

——————————————————————————————————

 

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

 

1.解释执行  (/编译执行)
2.基于栈的指令集 可移植性,更紧凑,简单(/基于寄存器的指令集)速度快,受限硬件
3.基于栈的解释器执行过程

public int add(){  int a =1 ; int b = 2  ; return a+b }; 

0: bipush 1
2: istore_1
3: sipush 2
6: istore_2
7: iload_1
8: iload_2
9: iadd
10: ireturn

 

 

   

 

转载于:https://www.cnblogs.com/dyllove98/archive/2013/06/07/3125028.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值