Java10 - JIT 编译器

JEP 317 − 基于 Java 的实验性 JIT 编译器

JIT 编译器是用 C++ 编写的,用于将 Java 转换为字节码。 现在 Java10 可以选择启用基于 Java 的实验性 JIT 编译器,即使用 Graal 代替标准 JIT 编译器。 Graal 使用 JVMCI,这是在 Java 9 中引入的 JVM 编译器接口。Graal 在 Java 9 中也可用。 使用 Java10,我们可以启用 Graal 来测试和调试实验性 JVM 编译器。

语法

java -XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

Graal 编译器是对基于 C++ 的早期编译器的完全重写,面向基于 Linux/x64 的平台。 Graal 是在 Java 9 中引入的,作为目前使用的 JIT 编译器的替代品。 Graal 是 JVM 的插件,可以动态插入。它也支持多语言解释。


风险和假设

由于 Graal 是实验性的,需要考虑各种热点和 jdk 测试以及各种标志选项的测试工作。 与标准 JIT Ahead of Time 编译器相比,它可能无法通过某些性能基准测试。