java虚拟机运行时栈帧的结构:局部变量表,操作数栈,动态链接,方法返回地址等。
一局部变量表
1.变量值的存储空间,用于存放方法参数和方法内部定义的局部变量。
2.在方法的code属性的max_locals中确定局部变量表的最大容量。
二操作数栈
1.主要利用它的入栈和出栈的操作做一些过程操作。
2.比如算术运算,调用其它方法的时候是通过操作数栈来进行参数传递的。
三动态链接
1.常量池中存有大量的符号引用,字节码中的方法调用指令就常以常量池中指向方法的符号引用作为参数。
2.这些符号引用一部分将在类加载阶段或第一次使用的时候转化为直接引用,这个过程在类加载过程叫做解析。另一部分符号引用将在运行期间转化为直接引用,这部分称为动态链接。
四方法返回地址
1.方法正常退出的时候,调用者PC计数器的值可以作为返回地址。
2.方法异常退出的时候,返回地址要通过异常处理器表来确定。