局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。
Java中方法的局部变量是放在虚拟机栈的局部变量表里面,形参也算一个。本地变量表,就是局部变量表,只是翻译不同。代码说明

运行时栈帧中存储了以下内容

  • 局部变量
  • 操作数栈
  • 动态链接
  • 返回地址
  • 附加信息

局部变量表

每一个方法的调用开始和结束都是栈的压入(入栈)和弹出(出栈)的过程

1
2
3
4
5
public static void main(String[] args) {
byte[] waste = new byte[6 * 1024 * 1024];
int new_var = 0;
System.gc();
}

反编译得到:

1
2
3
4
5
6
7
8
9
10
11
public static void main(java.lang.String[]);  
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=3, args_size=1
0: ldc #2 // int 6291456
2: newarray byte
4: astore_1
5: iconst_0
6: istore_2
7: invokestatic #3 // Method java/lang/System.gc:()V
10: return

结果:locals=3
也就是说局部变量表长度是3。