Spring boot OpenJDK 64位服务器VM警告:由于启用了JVMCI,因此强制TieredStopAtLevel进行完全优化
我使用的是Spring Boot,我刚刚从OpenJDK 8升级到GraalVM GraalVM CE 20.1.0(OpenJDK 20.0.7),因此我可以使用Polyglot特性 我得到一个令人担忧的信息:Spring boot OpenJDK 64位服务器VM警告:由于启用了JVMCI,因此强制TieredStopAtLevel进行完全优化,spring-boot,graalvm,Spring Boot,Graalvm,我使用的是Spring Boot,我刚刚从OpenJDK 8升级到GraalVM GraalVM CE 20.1.0(OpenJDK 20.0.7),因此我可以使用Polyglot特性 我得到一个令人担忧的信息: OpenJDK 64-Bit Server VM warning: forcing TieredStopAtLevel to full optimization because JVMCI is enabled 有人能给我解释一下这意味着什么,或者给我指一个资源,让我可以阅读更多关于
OpenJDK 64-Bit Server VM warning: forcing TieredStopAtLevel to full optimization because JVMCI is enabled
有人能给我解释一下这意味着什么,或者给我指一个资源,让我可以阅读更多关于它的信息吗?这是值得关注的吗?这是一个警告,所以不重要。最多您将启用顶层优化编译器,这可能需要更长的启动/预热时间 当您运行应用程序时(可能是docker映像配置,也可能是手动传递),会将
TieredStopAtLevel
选项传递给它。
很可能类似于-XX:TieredStopAtLevel=1
此选项将告诉JVM不要使用更高级的JIT编译层:
0级-解释器
1级-C1级,完全优化(无配置文件)
级别2-带有调用和后端计数器的C1
第3级-C1级,具有完整配置(第2级+MDO)
4级-C2
其中C1和C2是OpenJDK中包含的JIT编译器
现在在GraalVM上,顶级JIT(级别4)被GraalVM编译器所取代,该编译器使用JVMCI(JVM编译器接口)插入JVM,JVM编译器接口是专门为插入其他JIT编译器而创建的
运行GraalVM的java
时,默认情况下,JVMCI能够使用GraalVM JIT编译器
如果您停在第1层,这没有多大意义,因为您将无法到达JVMCI,JVMCI也已启用。但我认为这是一个错误,如果你能复制,请你提交给
我尝试使用基于JDK8的GraalVM 20.1.0 CE(因为您提到了OpenJDK 8):
它不会打印警告,可能是操作系统或其他因素造成的。运行IDEA应用程序时,运行配置时有一个按钮是“启用lanunch优化”。如果启用它,可能会打印此警告
❯ java -XX:TieredStopAtLevel=1 -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM GraalVM CE 20.1.0 (build 25.252-b09-jvmci-20.1-b02, mixed mode)