我正在尝试理解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 :(得分:0)
当方法被充分调用以传递JVM的编译阈值时,JIT将字节码编译为本机代码,并将其设置为对函数的调用直接转到本机编译的方法。