JEP 317:实验性基于 Java 的 JIT 编译器
概括
启用基于 Java 的 JIT 编译器 Graal,在 Linux/x64 平台上用作实验性 JIT 编译器。
非目标
达到或超越现有 JIT 编译器的性能并不是目标。
动机
Graal 是一种基于 Java 的 JIT 编译器,是 JDK 9 中引入的实验性 Ahead-of-Time (AOT) 编译器的基础。使其能够用作实验性 JIT 编译器是Project Metropolis的举措之一,并且下一步是研究 JDK 的基于 Java 的 JIT 的可行性。
描述
从 Linux/x64 平台开始,使 Graal 能够用作实验性 JIT 编译器。 Graal 将使用 JDK 9 中引入的 JVM 编译器接口 (JVMCI)。Graal 已经在 JDK 中,因此将其启用为实验性 JIT 主要是测试和调试工作。
要启用 Graal 作为 JIT 编译器,请在命令 行上使用以下选项java
:
-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler
测试
这项工作计划对编译器进行标准测试。这包括在 Linux/x64 上使用各种标志选项运行所有 HotSpot 和 JDK 测试。除了这些标准测试之外,还将运行专为 Graal 开发的单元测试。jtreg
将实现在框架中运行这些单元测试的支持。作为这项工作的一部分,将执行初始性能测试和基准测试。
风险和假设
此实验产品的启动性能较慢和 Java 堆使用量增加的问题可能会影响和/或限制最初的开发人员评估。与 现有的 HotSpot JIT 编译器相比,某些应用程序和基准测试会发现 Graal 中的性能差距。