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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM