Graal 不支持垃圾收集器

Garbage collector is not supported by Graal

我正在尝试 运行 GraalVM Community Edition 1.0 RC4 上的 Java 程序,该代码适用于最后一个 JDK 8 版本。代码 运行s 与 GraalVM 的方式相同,但相同的错误消息每秒在控制台中打印 100 次(我认为每次垃圾收集器都是 needed/used):

org.graalvm.compiler.debug.GraalError: <unknown> garbage collector is not supported by Graal
at org.graalvm.compiler.hotspot.HotSpotGraalRuntime.<init>(HotSpotGraalRuntime.java:205)
at org.graalvm.compiler.hotspot.HotSpotGraalCompilerFactory.createCompiler(HotSpotGraalCompilerFactory.java:145)
at org.graalvm.compiler.hotspot.HotSpotGraalCompilerFactory.createCompiler(HotSpotGraalCompilerFactory.java:123)
at org.graalvm.compiler.hotspot.HotSpotGraalCompilerFactory.createCompiler(HotSpotGraalCompilerFactory.java:47)
at jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.getCompiler(HotSpotJVMCIRuntime.java:360)
at jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.compileMethod(HotSpotJVMCIRuntime.java:448)

由于可能没有垃圾收集,程序似乎因打印 and/or 而变慢,而且它永远不会结束。

我用简单的 HelloWorld 进行了测试,但不断出现相同的错误消息。程序结束,因为它足够短,并且可以编译。

我按照official site with the GraalVM Community Edition. I found a similar error on Graal Github上的教程进行了操作,但是我不知道如何设置垃圾收集器,使用的命令行似乎是Java 10独有的。

编辑和解决方案: 我在 Ubuntu 上使用 Oracle VM VirtualBox,似乎 VM 设置太低了。如果您遇到同样的问题,请增加您的 RAM 和 CPU,应该可以解决。

根据您链接的 Github 问题,这是在所选 GC 反映在标志中之前初始化编译器时出现的问题。这似乎发生在 HotSpot 不考虑 server-class 的机器上,在这种情况下它实际上默认为串行 GC。

您应该能够通过使用 -XX:+UseSerialGC 显式请求串行 GC 来解决它。