如何理解javap输出中的LocalVariableTable区域
源代码:如何理解javap输出中的LocalVariableTable区域,java,jvm,jvm-hotspot,Java,Jvm,Jvm Hotspot,源代码: public class Example { public int plus(int a){ int b = 1; return a + b; } } 上一个文件的类的取消组装结果: public int plus(int); Code: Stack=2, Locals=3, Args_size=2 0: iconst_1 1: istore_2 2: iload_1 3: iload_2 4:
public class Example {
public int plus(int a){
int b = 1;
return a + b;
}
}
上一个文件的类的取消组装结果:
public int plus(int);
Code:
Stack=2, Locals=3, Args_size=2
0: iconst_1
1: istore_2
2: iload_1
3: iload_2
4: iadd
5: ireturn
LineNumberTable:
line 5: 0
line 6: 2
LocalVariableTable:
Start Length Slot Name Signature
0 6 0 this LExample;
0 6 1 a I
2 4 2 b I
我的问题是如何理解以下区域,这里的长度
,槽
是什么意思:
LocalVariableTable:
Start Length Slot Name Signature
0 6 0 this LExample;
0 6 1 a I
2 4 2 b I
见:
Start是字节码中定义变量的行,length是定义变量的字节码行数。因此,“开始到长度”定义变量的范围。
我猜槽对应于索引,第一个变量本身大约为0,第二个变量为1,第三个变量为2,依此类推(在双精度/长精度的情况下加上附加的偏移量)