JVM局部变量表(Local Variables)
程序员文章站
2022-05-12 14:02:23
...
JVM局部变量表(Local Variables)
- 局部变量表也被称之为局部变量数组或本地变量表
- 定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引用(reference),以及returnAddress类型。
- 由于局部变量表是建立在线程的栈上,是线程的私有数据,因此不存在数据安全问题
- 局部变量表所需的容量大小是在编译期确定下来的,并保存在方法的Code属性的maximum local variables数据项中。在方法运行期间是不会改变局部变量表的大小的。
- **方法嵌套调用的次数由栈的大小决定。**一般来说,**栈越大,方法嵌套调用次数越多。**对一个函数而言,它的参数和局部变量越多,使得局部变量表膨胀,它的栈帧就越大,以满足方法调用所需传递的信息增大的需求。进而函数调用就会占用更多的栈空间,导致其嵌套调用次数就会减少。
- 局部变量表中的变量只在当前方法调用中有效。在方法执行时,虚拟机通过使用局部变量表完成参数值到参数变量列表的传递过程。当方法调用结束后,随着方法栈帧的销毁,局部变量表也会随之销毁。
代码演示案例如下:
package com.lbl.LocalVariables;
public class LocalVariablesTest {
private int count=0;
public static void main(String[] args) {
LocalVariablesTest test = new LocalVariablesTest();
int num=10;
test.test1();
}
public void test1(){
System.out.println("test1....run");
}
}
由IDEA中的jclasslib可以看到Maximum local variables: