虚拟机字节码执行引擎

2020-02-23  本文已影响0人  官子寒

执行引擎,是Java虚拟机最核心的组成部分之一,执行引擎在执行代码时可能是编译执行,也可能是解释执行,也可能两者兼备。但所有的执行引擎都是输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果

1. 运行时栈帧结构

栈帧,是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧储存了局部变量表,操作数栈,动态链接和方法返回地址等信息

1.1 局部变量表

变量值存储空间,用于存放方法参数和方法内部定义的局部变量

1.2 操作数栈

1.3 动态链接

每个栈帧都包含一个指向运行时常量池中该栈帧索树方法的引用,持有这个引用是为了支持方法调用过程中的动态连接

JVM - 直接引用和符号引用

1.4 方法返回地址

退出可能的操作:

  1. 恢复上层方法的局部变量表和操作数栈
  2. 把返回值压入调用者栈帧的操作数栈中
  3. 调整PC计数器的值以指向方法调用指令后面的一条指令等

谈谈java字符串常量池和符号引用

1.5 附加信息

2. 方法调用

方法调用不等同于方法执行,它的唯一任务就是确定被调用方法的版本,不涉及运行过程

2.1 解析

2.2 分派

上一篇 下一篇

猜你喜欢

热点阅读