局部变量表,一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量

其单位为Slot,和类文件中的一致,一般要求每个Slot可以占用32位长度的内存空间,这个没有强制要求大小啊

对于基本数据类型,不必多讲,对于引用数据类型,那么只需要保证能够间接或者直接的找到数据类型就行

对于超过1个slot的,比如64位数据类型,虚拟机会将其分为两个Slot内存空间,不过不必担心线程并发带来的安全问题,因为局部变量表是线程内部的,不必担心线程安全问题

而且为了节省栈帧空间,Slot是可以重用的,一个定义的变量可能在方法中就失效了,所以Slot可能会复用,而这种复用会配合垃圾收集行为

但是一个对象是否能被回收的根本原因,局部变量中Slot中是否还有对象的引用,如果离开了一个对象的作用域,虽然没有对局部变量表的读写操作,但是仍然保持着对它的关联,这种关联没有被及时打断,随意需要回收,可以将这个值手动设置为null,方便GC回收

需要注意的一点,在局部变量表中,是不会为基本数据类型赋予初始值的,如果全程没有给与初始化值就使用,那么会出现错误的

发表评论

邮箱地址不会被公开。 必填项已用*标注