您的位置:首页 > 编程语言 > Java开发

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

2013-06-07 16:33 148 查看

运行时栈帧结构

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: