0

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

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)

该程序似乎因打印和/或可能缺少垃圾收集而减慢了速度,并且永远不会结束。

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

我使用 GraalVM 社区版按照官方网站上的教程进行操作。我在Graal Github上发现了类似的错误,但我不知道如何设置垃圾收集器,使用的命令行似乎是 Java 10 独有的。

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

4

1 回答 1

1

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

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

于 2018-08-03T08:08:07.123 回答