JVM学习--局部变量表

Posted wangflower

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM学习--局部变量表相关的知识,希望对你有一定的参考价值。

 

变量分类:

1)基本数据类型  、 引用数据类型

2)成员变量(在使用前,都经历过默认初始化值) :类变量(liking的prepare阶段给类变量默认赋值,在initial阶段,给类变量显示赋值及静态代码块赋值)、实例变量(随着对象的创建,会在堆空间中分配实例变量空间,并进行默认赋值)

     局部变量:在使用前,必须进行显示赋值,否则编译不通过

 

 

 

局部变量表,定义为一个数组,主要用于存储方法参数(形参)和定义在方法体内的局部变量,最基本的存储单位是Slot(槽)

局部变量表中存放编译期可知的各种基本数据类型,8种数据类型,引用类型(reference),returnAddress类型的变量

32位以内的类型占用一个Slot,包括returnAddress类型,64位的类型(long和double)占用2个Slot,byte、short、char在存储之前转换为int,boolean在存储前转换为int,0标识false,1 标识true

局部变量表建立在线程私有的栈上,是线程安全的

JVM会为局部变量表的每个Slot分配一个访问索引,通过这个索引可以访问到局部变量表中的局部变量值

占用两个Slot的变量也就是double和long,只需要使用前一个索引即可

如果当前帧是由构造方法或者实例方法创建的,那么该对象引用this将会存在index为0 的Slot处,非静态方法,都会创建this的一个参数,index为0,其余的参数是按照顺序排放的,static 方法被不可以使用this是因为static方法中没有放this的index

 

以上是关于JVM学习--局部变量表的主要内容,如果未能解决你的问题,请参考以下文章

JVM虚拟机------运行时数据区-----JVM虚拟栈----局部变量表

JVM虚拟机------运行时数据区-----JVM虚拟栈----局部变量表

Jvm(60),虚拟机字节码执行引擎----局部变量表

Java 虚拟机原理栈帧 | 局部变量表 | 操作数栈 | 方法出口 | JVM 指令逐条解析

如何优雅的学习JVM,进行篇

如何优雅的学习JVM,进行篇