我正在阅读JEP 317。它说 Graal(一个新的实验性的基于 Java 的 JIT 编译器)将成为 JDK 10 的一部分,但是它说它已经在 JDK 9 中可用。那么,JEP 317 的意义何在?Java 9 是否包含 Graal?
问问题
2765 次
2 回答
19
从我的一份备忘录中,在 linux-x64(开箱即用)上使用 JDK 9 上的 Graal,您可以使用以下命令启用它:
-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
资料来源:克里斯的推文。
如果您明确愿意使用这些org.graalvm.*
类,它们不会出现在 JDK-9 构建中,除了这里的 Linux 发行版和JEP-317#Experimental Java-Based JIT Compiler的状态也有类似的内容。
Status Integrated Scope JDK Release 10
更新:- 要在 JDK10 上使用 Graal,可以使用以下方法启用它:-
-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler -Djvmci.Compiler=graal
于 2018-01-14T18:46:05.817 回答
1
Graal 包含在 9 中,但它以不同的方式使用。
在 Java 9 中,Graal 用作 AOT(Ahead of time)编译器,允许用户使用该jaotc
工具创建手动编译的.so
库。
然后可以在 JVM 启动时加载这些库并直接使用。
详细说明可以在相关的 Java 9 JEP 中找到:http: //openjdk.java.net/jeps/295
在 Java 10 Graal 中,如 JEP 317 中所述,可以用作 JIT 编译器而不是 HotSpot。
这意味着类将在 JVM 中“即时”编译,而不需要事先手动编译。
于 2018-04-03T18:44:55.413 回答