-server -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler 时使用哪个编译器

which compiler is used when -server -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler

我的 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干脆就忽略了,读。你可以做的是 运行 一些额外的命令:

 java -XX:+UnlockExperimentalVMOptions 
      -XX:+EnableJVMCI 
      -XX:+UseJVMCICompiler  
      -Dgraal.ShowConfiguration=info  // this
      -XX:+EagerJVMCI  // and this matters

结果将包含:

Using Graal compiler configuration 'community' .....