《深入理解java虚拟机》之字节码执行引擎

时间:2022-12-15 17:04:59
执行引擎:  解释执行
编译执行

栈帧: 局部变量表 以变量槽slot为最小单位
0位索引的slot默认为this
slot可以重用

操作栈 Code属性中max_stacks设置了最大深度
后入先出

动态连接 在运行期间将符号引用转为直接引用,与静态解析相对

返回地址 正常完成出口(pc计数器值)
异常完成出口(由异常处理器表决定)

方法调用: 解析(目标方法在Class文件中是常量池符号引用,在类加载解析阶段
一部分符号引用转化为直接引用)

分派 静态分派(重载)

动态分派(重写:invokevirtul指令运行期间将常量池
目标方法符号引用解析到不同的直接引用上。
动态分派实现:方法区中虚方法表,存放各个方法入口地址)

指令集: 基于栈 可移植
不需要考虑空间分配
速度慢
基于寄存器