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 回答