Chinaunix首页 | 论坛 | 博客
  • 博客访问: 389487
  • 博文数量: 70
  • 博客积分: 1919
  • 博客等级: 上尉
  • 技术积分: 1179
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 20:05
文章分类

全部博文(70)

文章存档

2014年(2)

2013年(29)

2012年(20)

2011年(1)

2010年(13)

2009年(5)

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

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

阅读(1094) | 评论(0) | 转发(0) |
0

上一篇:JVM 类的加载过程

下一篇:JVM类加载器

给主人留下些什么吧!~~