2014-02-08 4 views
2

소스 코드 LocalVariableTable 영역을 이해하는방법은 javap 출력

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 

내 질문은 다음과 같은 영역을 이해하는 방법이다는 Length을 무엇을, Slot 여기에서 의미하십시오 :

LocalVariableTable: 
    Start Length Slot Name  Signature 
    0  6  0  this  LExample; 
    0  6  1  a  I 
    2  4  2  b  I 

답변

1

를보십시오3210 :

시작은 변수가 바이트 코드에 정의 된 행이며 길이는 정의 된 바이트 코드의 행 수입니다. 그래서 길이 시작은 변수의 범위를 정의합니다. Slot은 첫 번째 변수의 경우 대략 0, 두 번째 변수의 경우 1, 두 번째 변수의 경우 1, 두 번째 변수의 경우 2 등으로 나타낼 수 있습니다 (double 형/long 형인 경우 오프셋을 더한 값).