我如何 运行 a class 用 jaotc 编译?
How do I run a class compiled with jaotc?
我使用 Java 9 Ahead-Of-Time Compiler jaotc
使用以下命令编译了一个简单的 class:
javac Test.java
jaotc Test.class
这会生成一个名为 unnammed.so
的文件。我如何运行编译程序?我需要用 .so 文件写一个 bootstrap 程序到 link 吗?
你应该看看 JEP 295,它在 JDK 9,http://openjdk.java.net/jeps/295 中描述了 AOT 编译。您需要使用 --XX::AOTLibrary 命令行标志。
要执行您的应用程序:
java -XX::AOTLibrary=./unnamed.so,./libjava.base.so Test
您显然必须从 JDK 9 分发版中复制 libjava.base.so 文件或将路径更改为它所在的位置。
编译时你还应该使用 --output 标志到 jaotc 这样你就不会得到 'unnamed.so'.
执行AOT编译后,需要在应用执行时指定生成的AOT库:
java -XX:AOTLibrary=./Test.so Test
您还应该编译 java.base
以获得真正的性能改进:
jaotc --output libjava.base.so --module java.base
请注意,在 AOT 编译和执行期间应使用相同的 java 运行时配置。
例如:
jaotc -J-XX:+UseParallelGC -J-XX:-UseCompressedOops --output libTest.so Test.class
java -XX:+UseParallelGC -XX:-UseCompressedOops -XX:AOTLibrary=./libTest.so Test
查看 this,了解更多信息。
我使用 Java 9 Ahead-Of-Time Compiler jaotc
使用以下命令编译了一个简单的 class:
javac Test.java
jaotc Test.class
这会生成一个名为 unnammed.so
的文件。我如何运行编译程序?我需要用 .so 文件写一个 bootstrap 程序到 link 吗?
你应该看看 JEP 295,它在 JDK 9,http://openjdk.java.net/jeps/295 中描述了 AOT 编译。您需要使用 --XX::AOTLibrary 命令行标志。
要执行您的应用程序:
java -XX::AOTLibrary=./unnamed.so,./libjava.base.so Test
您显然必须从 JDK 9 分发版中复制 libjava.base.so 文件或将路径更改为它所在的位置。
编译时你还应该使用 --output 标志到 jaotc 这样你就不会得到 'unnamed.so'.
执行AOT编译后,需要在应用执行时指定生成的AOT库:
java -XX:AOTLibrary=./Test.so Test
您还应该编译 java.base
以获得真正的性能改进:
jaotc --output libjava.base.so --module java.base
请注意,在 AOT 编译和执行期间应使用相同的 java 运行时配置。
例如:
jaotc -J-XX:+UseParallelGC -J-XX:-UseCompressedOops --output libTest.so Test.class
java -XX:+UseParallelGC -XX:-UseCompressedOops -XX:AOTLibrary=./libTest.so Test
查看 this,了解更多信息。