A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  • 局部变量表也被称之为局部变量数组或本地变量表
  • 定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引用(reference),以及returnAddress类型。
  • 由于局部变量表是建立在线程的栈上,是线程的私有数据,因此不存在数据安全问题
  • 局部变量表所需的容量大小是在编译期确定下来的,并保存在方法的Code属性的maximum local variables数据项中。在方法运行期间是不会改变局部变量表的大小的。
  • **方法嵌套调用的次数由栈的大小决定。**一般来说,**栈越大,方法嵌套调用次数越多。**对一个函数而言,它的参数和局部变量越多,使得局部变量表膨胀,它的栈帧就越大,以满足方法调用所需传递的信息增大的需求。进而函数调用就会占用更多的栈空间,导致其嵌套调用次数就会减少。
  • 局部变量表中的变量只在当前方法调用中有效。在方法执行时,虚拟机通过使用局部变量表完成参数值到参数变量列表的传递过程。当方法调用结束后,随着方法栈帧的销毁,局部变量表也会随之销毁。


代码演示案例如下:
[Java] 纯文本查看 复制代码
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:



1 个回复

倒序浏览
霍霍,脑袋装满了知识
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马