Java虚拟机栈栈帧
Java虚拟机栈栈帧
java虚拟机以方法作为最基本的执行单位。“栈帧”是用于支持虚拟机进行方法调用和方法执行背后的数据结构。栈帧存储了方法的局部变量表,操作数栈,动态链接和方法返回地址等信息。
栈帧的概念结构
局部变量表
- 局部变量表是一组变量值的存储空间,局部变量表以变量槽为单位
- java虚拟机规范中未规定一个变量槽应该占有内存空间大小,只是有导向的说明没个变量槽都应该存放一个boolean,byte,char,short,int,float,reference,returnAddress类型的数据
reference 表示对一个对象的引用,java虚拟机规范中并没有明确指出reference类型的长度。
虚拟机至少通过这个应用确认两件事:
- 根据引用直接或间接的查找到对象在java堆中的数据存放的起始地址或索引
- 根据引用直接或间接的查找对象所属数据类型在方法区中的存储的类型信息
returnAddress现在基本很少出现
操作数栈
_ 两个栈帧之间的数据共享 _
动态链接
方法返回地址
附加信息
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杨柳亭!