2014-02-08 75 views
2

源代碼LocalVariableTable面積:如何理解javap的輸出

public class Example { 
    public int plus(int a){ 
    int b = 1; 
    return a + b; 
    } 
} 

前一個文件的類的Deassemble結果:

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 

我的問題是如何理解下面的區域,什麼是LengthSlot的意思是:

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

回答

1

查看the specs

開始是變量在字節碼中定義的行,長度是定義它的字節碼的行數。所以開始定義變量的範圍。 我想Slot對應於索引,對於第一個變量本身大致爲0,對於第二個爲大約0,對於第三個等於2(對於雙倍/長整數加上增加的偏移量)。