Java Graal不支持垃圾收集器

Java Graal不支持垃圾收集器,java,garbage-collection,graalvm,Java,Garbage Collection,Graalvm,我试图在GraalVM Community Edition 1.0 RC4上运行一个Java程序,该代码适用于最新的JDK 8版本。代码以与GraalVM相同的方式运行,但控制台每秒打印100次相同的错误消息(我认为每次需要/使用垃圾收集器时): org.graalvm.compiler.debug.GraalError:Graal不支持垃圾收集器 位于org.graalvm.compiler.HotSpotGraalRuntime。(hostpotgraalruntime.java:205)

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

org.graalvm.compiler.debug.GraalError:Graal不支持垃圾收集器
位于org.graalvm.compiler.HotSpotGraalRuntime。(hostpotgraalruntime.java:205)
位于org.graalvm.compiler.HotSpotGraalCompilerFactory.createCompiler(hostpotgraalcompilerFactory.java:145)
位于org.graalvm.compiler.HotSpotGraalCompilerFactory.createCompiler(hostpotgraalcompilerFactory.java:123)
位于org.graalvm.compiler.HotSpotGraalCompilerFactory.createCompiler(hostpotgraalcompilerFactory.java:47)
位于jdk.vm.ci.HotSpotJVMCIRuntime.getCompiler(hostpotJVMCiruntime.java:360)
位于jdk.vm.ci.HotSpotJVMCIRuntime.compileMethod(hostpotJVMCiruntime.java:448)
由于打印和/或可能缺少垃圾收集,程序似乎变得缓慢,而且它永远不会结束

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

我跟随了GraalVM社区版上的教程。我在上发现了类似的错误,但我不知道如何设置垃圾收集器,使用的命令行似乎是Java10独占的


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

根据您链接的Github问题,在所选GC反映在标志中之前初始化编译器时,这是一个问题。这似乎发生在热点不考虑服务器类的机器上,在这种情况下,它实际上默认为串行GC。
您应该能够通过使用
-XX:+UseSerialGC

显式请求串行GC来解决这个问题。我尝试了这个选项,但问题发生在编译时,-XX:+UseSerialGC选项是针对jvm的,而不是编译器(如果我理解得很好的话)。无论如何,我直接问了GitHub问题,只是我的VirtualBox VM设置没有提供足够的RAM和CPU。
-XX:+UseSerialGC
确实是一个JVM选项。Graal是一个在JVM上运行的编译器,我建议您将这个JVM选项传递给任何一个JVM给您这个错误。出于好奇,我用一个终端和以前的VM设置测试了这个选项:javac-J-XX:+UseSerialGC HelloWorld.java,它确实可以工作!谢谢!我将使用我的新VM配置来避免任何此类问题,但这可能对未来的读者有用。
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)