《深入理解Java虚拟机》读书笔记(七)--虚拟机字节码执行引擎(上)

目录

 

前言

一、运行时栈帧结构

1.1 局部变量表

1.2 操作数栈

1.3 动态连接

1.4 方法返回地址

1.5 附加信息

二、确定执行方法

2.1 解析

2.2 分派

2.2.1 静态分派

2.2.2 动态分派

2.2.3 单分派和多分派

2.2.4 虚拟机动态分派的实现


前言

本章主要讲述虚拟机如何确定调用方法的版本和如何执行方法。

一、运行时栈帧结构

1.1 局部变量表

用于存放方法参数和方法内定义的局部变量。在编译阶段,就在方法表的Code属性的max_locals数据项确定了方法所需的局部变量表最大空间。其容量以变量槽(slot)为最小单位,虚拟机规范没有明确规定一个slot应占用的空间大小,只是有导向性地说每个slot都应该能存放一个boolean、byte、char、short、int、float、reference或returnAddress类型的数据,这8种数据类型都可以使用32位或更小的内存来存放,但是也允许slot的长度可以随着处理器、操作系统或虚拟机的不同而变化,只要保证即使使用64位的内存空间去实现一个slot,虚拟机仍然要使用对齐和补白的手段让slot在外观上看起来与32位虚拟机中的一致。

注:关于reference类型,虚拟机规范没有明确规定它的长度

  • 45
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值