深入JVM 运行时栈帧结构

栈帧(stack Frame)是用于支持虚拟机进行方法调用和执行的数据结构,它是虚拟机运行时数据区中虚拟机栈的栈元素。栈帧存储方法的局部变量表,操作数栈,动态连接,方法返回地址等信息。每一个方法的执行过程,都对应着一个栈帧入栈和出栈的过程

每一个栈帧需要的各部分数据结构,在编译程序代码时,都已确定并写入方法表的Code属性中,因此一个栈帧需要分配多大的内存,不会受到程序运行期间变量数据的影响,而仅仅却决于虚拟机具体的实现

一个线程中的方法调用链可能会很长,很多方法都同时处于执行状态。但从执行引擎角度看,只有处于栈顶的栈帧才是有效的,称为当前栈帧,与这个栈帧关联的方法称为当前方法。执行引擎运行的所有字节码指令都只针对当前栈帧进行操作,具体的模型结构图:

猜你喜欢

转载自blog.csdn.net/qq_33369979/article/details/87936026
今日推荐