分类: Java
2013-09-29 11:45:14
1.运行时栈帧结构
栈帧存储了方法的局部变量表、操作数栈、动态链接和方法返回地址等信息。每一个方法从调用开始到执行完成的过程,都对应这一个栈帧在虚拟机里从入栈到出栈的过程。
局部变量表:是一组变量值的存储空间,用于存放方法参数和方法内部定义的局部变量。
操作数栈
(java虚拟机的解释引擎称为“基于栈的执行引擎”,其中栈就是操作数栈)
2.方法调用
解析-静态方法、私有方法,在类的加载解析阶段,会将其中一部分符号引用转化为直接引用。
分派-调用过程是多态特性(重载和重写)的基本体现。分派分为:静态分派、动态分派、单分派、多分派。
静态分派-重载
动态分派-重写
3.基于栈的字节码解释执行引擎
3.1 基于栈的指令集:
exg:iconst_1
iconst_1
iadd
istore_0
3.2 基于寄存器的指令集:
exg:move eax,1
add eax,1
3.3 基于栈的指令集与基于寄存器的指令集:
基于栈的指令集的优点是可移植性,寄存器有硬件直接提供,程序直接依赖这些硬件寄存器,则不可避免地要受到硬件的约束。栈架构的指令集还有其他优点(代码相对紧凑、编译器实现更加简单)。栈架构指令集的主要缺点是执行速度相对来说要慢一些。