我试图理解 Java JITC 的“ native 代码生成和执行”部分,但很难想象到底发生了什么。例如。假设我有以下类(class):
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 将其转换为 native 代码时,到底会发生什么?那么这个本地代码是如何被JVM执行的呢?
最佳答案
当方法被足够频繁地调用以通过 JVM 的编译阈值时,JIT 会将字节码编译为 native 代码,并对其进行设置,以便对函数的调用直接转至 native 编译的方法。
关于Java JITC native 代码生成/执行示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10105330/