您当前的位置: 首页 >  Java

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

深入理解Java虚拟机——运行时栈帧结构(操作数栈)

小志的博客 发布时间:2022-03-26 21:22:31 ,浏览量:0

目录
    • 一、操作数栈的概述
    • 二、操作数栈的概念模型

一、操作数栈的概述
  • 操作数栈(Operand Stack)也常称为操作栈,它是一个后入先出(Last In First Out,LIFO)栈。

  • 同局部变量表一样,操作数栈的最大深度也在编译的时候写入到Code属性的max_stacks数据项中。

  • 当一个方法刚刚开始执行的时候,这个方法的操作数栈是空的,在方法的执行过程中,会有各种字节码指令往操作数栈中写入和提取内容,也就是出栈/入栈操作。

  • Java虚拟机的解释执行引擎称为“基于栈的执行引擎”,其中所指的“栈”就是操作数栈。

二、操作数栈的概念模型
  • 在概念模型中,两个栈帧作为虚拟机栈的元素,是完全相互独立的。但在大多虚拟机实现里都会做一些优化处理,令两个栈帧出现一部分重叠。
  • 让下面栈帧的部分操作数栈与上面栈帧的部分局部变量表重叠在一起,这样在进行方法调用时就可以共用一部分数据,无须进行额外的参数复制传递,重叠的过程如下图所示: 在这里插入图片描述
关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0399s