跳到主要内容

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

QWen Max 中英对照 JEP 317 Experimental Java-Based JIT Compiler

概述

启用基于 Java 的即时编译器 Graal,作为 Linux/x64 平台上实验性的即时编译器使用。

非目标

目标并不是要达到或超越现有 JIT 编译器的性能。

动机

Graal 是一个基于 Java 的 JIT 编译器,是 JDK 9 中引入的实验性的提前编译(AOT)编译器的基础。启用它作为实验性 JIT 编译器是 Project Metropolis 的举措之一,也是进一步研究基于 Java 的 JIT 在 JDK 中的可行性的下一步。

描述

启用 Graal 作为实验性的即时(JIT)编译器,首先从 Linux/x64 平台开始。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 上会出现性能差距。