1

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によってどのように実行されますか?

4

1 に答える 1

0

メソッドが頻繁に呼び出されて JVM のコンパイルしきい値を超えると、JIT はバイトコードをネイティブ コードにコンパイルし、関数の呼び出しがネイティブにコンパイルされたメソッドに直接行くように設定します。

于 2012-04-11T15:37:01.547 に答える