[JVM笔记].虚拟机栈

201 阅读1分钟
  • 线程私有,每创建一个线程就会创建一个虚拟机栈

栈帧组成

  1. 局部变量表
  2. 操作数栈(或表达式)
  1. 动态链接(或运行时指向常量池的引用)
  2. 返回值(或异常)

栈帧存放的内容

  1. 8种基本数据类型(bool byte char short int long double float)
  2. 对象的引用变量
  1. 实例方法

局部变量表

  1. 定义为一个数组,主要用于存储方法参数、定义在方法体内的局部变量(基本数据类型、对象引用、返回值等)
  2. 基本存储单元为slot,32位以下的类型只能存在一个slot里面,每个slot都会分配一个索引,当一个实例方法被调用的时候,他的每个参数将会按照顺序被复制到局部变量表的每一个slot中;如果当前栈帧是由实例方法或者构造方法创建的,该对象的引用的this将会存放在索引0处。
  1. slot是可复用的