Java JITC native 代码生成/执行示例?

标签 java jit native-code

我试图理解 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/

相关文章:

c++ - llvm jit 编译成二进制

java - native 内存泄漏分析工具

java - 从理论上讲,我可以获得 openJDK JIT,并将我的 java 代码编译为 native 代码吗?

java - JNI接口(interface)指针混淆

java - android java设置修复微调器的默认值

java - GUICE @Singleton 中正确的范围处理与默认范围

java - Netbeans:如何将 Java EE 容器添加到 java 项目

java.lang.ClassNotFoundException 怎么可能?

jit - SPARC 体系结构是否仍然与高端服务器上的 JIT 编译器目标相关?

c# - 有没有办法查看 JITter 为给定的 C#/CIL 生成的 native 代码?