JVM 运行时栈帧结构详解 - TongtongLan/Java GitHub Wiki

运行时栈帧结构

栈帧是用于支持虚拟机进行方法调用的和方法执行的数据结构,是虚拟机栈中的栈元素。每一个栈帧都包括了局部变量表、操作数栈、动态链接、方法出口等信息。在编译程序代码时,栈帧中需要的局部变量表大小、操作数栈深度都已完全确定了(可以查看字节码),并且写入到方法表的Code属性之中了。因此一个栈帧需要分配多大内存在编译时期就已确定且仅仅取决于虚拟机实现。

对于执行引擎,在活动线程中,只有位于栈顶的栈帧(当前栈帧 Current Stack Frame)才是有效的,称为当前方法(Current Method)。

概念模型如下所示:

栈帧

局部变量表

操作数栈

动态链接

方法出口