2012-04-11 65 views
1

我正試圖理解Java JITC的'本地代碼生成和執行'部分,但是很難直觀地看到會發生什麼。例如。說我有下面的類:Java JITC本地代碼生成/執行示例?

class Foo 
{ 
    private int x; 
    public void incX() 
    { 
     x++; 
    } 
} 

javac的生成方法如下字節碼:

public void incX(); 
Code: 
Stack=3, Locals=1, Args_size=1 
0: aload_0 
1: dup 
2: getfield  #17; //Field x:I 
5: iconst_1 
6: iadd 
7: putfield  #17; //Field x:I 
10: return 
LineNumberTable: 
line 33: 0 
line 34: 10 

LocalVariableTable: 
Start Length Slot Name Signature 
0  11  0 this  LFoo; 

當JITC轉換爲本地代碼這一點,到底發生了什麼?這個本地代碼是如何由JVM執行的?

回答

0

當方法經常被調用以通過JVM的編譯閾值時,JIT將字節碼編譯爲本地代碼,並對其進行設置,以便對函數的調用直接轉到本機編譯的方法。