我的JVM有-server
选项,我相信它使JVM能够使用C2编译器,这意味着用于服务器应用程序,这些应用程序往往比客户端对应程序运行更长时间。但是,GRAAL JIT(由-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
启用)意味着取代C2,即使我同时给出两个选项,我的JVM也会启动。
-server -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
哪个编译器最终使用? Graal JIT还是C2?
-server
被忽略了,请阅读this answer for example。你可以做的是运行一些额外的命令:
java -XX:+UnlockExperimentalVMOptions
-XX:+EnableJVMCI
-XX:+UseJVMCICompiler
-Dgraal.ShowConfiguration=info // this
-XX:+EagerJVMCI // and this matters
结果将包含:
Using Graal compiler configuration 'community' .....