JVM虚拟机运行时帧结构及字节码执行引擎

1160阅读 0评论2013-09-29 liyongchao89
分类:Java

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 基于栈的指令集与基于寄存器的指令集:

基于栈的指令集的优点是可移植性,寄存器有硬件直接提供,程序直接依赖这些硬件寄存器,则不可避免地要受到硬件的约束。栈架构的指令集还有其他优点(代码相对紧凑、编译器实现更加简单)。栈架构指令集的主要缺点是执行速度相对来说要慢一些。

上一篇:JVM 类的加载过程
下一篇:JVM类加载器