JVM局部变量表(Local Variables)

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:

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37924905/article/details/108740436