为了获得GraalVM提供的性能好处,必须使用GraalVM的编译器编译应用程序。但是,我不清楚的是,应用程序是否也必须由GraalVM执行,或者它是否可以部署到“常规”VM (例如,OpenJDK)中,以便从改进的性能中获益?
一些可能相关的附加细节
发布于 2021-11-01 10:49:11
如果您已经用JVM运行时模式编译了代码,那么您可以在任何JVM上运行应用程序。没有强制使用GraalVM运行应用程序。
如果您已经用Native编译器编译了您的代码,那么它将创建一个本机可执行二进制文件,它可以直接执行,而无需使用任何JVM。
发布于 2021-11-01 16:32:00
GraalVM是以OpenJDK为基础的,附带了一些额外的功能;其中一个是最先进的编译器。
Graal编译器非常通用;它用于编译本机映像(AOT模式),但也可以用作JIT编译器,取代C2,后者是OpenJDK中的默认版本。
在这种情况下,编译器这个术语有点过载了。传统的Java“编译器”,例如javac/ecj,将Java源代码编译成字节码。“优化编译器”,例如Graal和C2,将字节码编译成高度优化的程序集。
GraalVM使用了不同的“优化编译器”(Graal),与普通的OpenJDK (C2)相比,它确实会带来一些加速,但这很大程度上取决于您的工作负载,您应该始终度量自己。
https://stackoverflow.com/questions/69795761
复制相似问题