深入理解Java虚拟机——运行时栈帧结构(操作数栈)
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Java虚拟机——运行时栈帧结构(操作数栈)相关的知识,希望对你有一定的参考价值。
目录
一、操作数栈的概述
-
操作数栈(Operand Stack)也常称为操作栈,它是一个后入先出(Last In First Out,LIFO)栈。
-
同局部变量表一样,操作数栈的最大深度也在编译的时候写入到Code属性的max_stacks数据项中。
-
当一个方法刚刚开始执行的时候,这个方法的操作数栈是空的,在方法的执行过程中,会有各种字节码指令往操作数栈中写入和提取内容,也就是出栈/入栈操作。
-
Java虚拟机的解释执行引擎称为“基于栈的执行引擎”,其中所指的“栈”就是操作数栈。
二、操作数栈的概念模型
- 在概念模型中,两个栈帧作为虚拟机栈的元素,是完全相互独立的。但在大多虚拟机实现里都会做一些优化处理,令两个栈帧出现一部分重叠。
- 让下面栈帧的部分操作数栈与上面栈帧的部分局部变量表重叠在一起,这样在进行方法调用时就可以共用一部分数据,无须进行额外的参数复制传递,重叠的过程如下图所示:
以上是关于深入理解Java虚拟机——运行时栈帧结构(操作数栈)的主要内容,如果未能解决你的问题,请参考以下文章