栈帧(Stack frame)是用于虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈的栈元素,存储了方法的局部变量表,操作数栈,动态链接,方法返回地址,以及一些额外附加信息。每一个方法从开始调用到执行完成,就是一个栈帧在虚拟机栈中的入栈到出栈过程。
- 局部变量表,是一组变量值存储空间,用于存放方法参数和方法局部变量。
- 操作数栈也常称为操作栈,方法执行过程中会有各种字节码指令往操作数栈中存入和取出,也就是入栈和出栈。
- 动态链接是指在程序运行期间将常量池中的符号引用转化为直接引用的过程。
- 方法返回地址是方法推出后程序返回的位置,方法正常退出时,调用者的PC计数器的值可以作为返回地址,方法异常退出时,返回地址通常由异常处理器决定。
- 附加信息是指不在虚拟机规范中定义的,虚拟机实现额外添加的一下栈帧信息,比如与调试相关的信息。