分类: Java
2016-07-25 15:14:40
栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构。他是虚拟机运行时数据区中的虚拟机栈中的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态链接和方法返回地址等信息。每一个方法从调用到执行完成的过程。就对应着一个栈帧从入栈到出栈的过程。
每一个栈帧包括了局部变量表,操作数栈,动态链接,方法返回地址和一些额外的信息。
在编译程序代码的时候,栈中需要多大的局部变量表,多深的操作栈都已经确定。
局部变量表
局部变量表是一组变量值存储空间。用于存放方法参数和方法内部定义的局部变量。在java程序编译为class文件时,就在方法的code属性的max_locals数据相中确定了该方法所分配的最大局部变量表的最大容量。
操作数栈
操作数栈也常备成为操作栈,他是一个后入先出栈。当一个方法刚刚执行的时候,这个方法的操作栈时空的,在方法的执行过程中,会有各种字节码指令向操作数栈写入和提取数据。也就是出栈和入栈的操作。