GraalVM 能否将提前编译与自适应优化结合起来?

Can GraalVM combine ahead of time compilation with adaptive optimization?

据我所知,JVM 可以以不同的方式工作:

解释器:从字节码到本机代码的运行时一遍遍地翻译。

即时编译:在需要时在运行时将部分字节码编译成本机代码。保留汇编。编译的性能开销/惩罚。介绍了在运行时进行自适应优化的可能性,这在静态提前编译中是不可能的。

热点:只有经常执行的部分才会被 JIT 编译。其余的得到解释。

现在 GraalVM 可以提前将字节码编译成本地代码。

是否可以提前编译字节码并对热点进行自适应优化(一般情况下,特殊情况下使用GraalVM)?

[说明] 我并不是要将部分字节码 AOT 编译为本机代码,而将其他部分保留为字节码以在运行时对它们执行热点 JIT 编译。这就是 IBM 的 Excelsior Jet Java 实现似乎所做的,到目前为止我已经阅读过。 我的意思是 AOT 编译整个字节码并在运行时用自适应优化的热点重新编译替换热点部分。这需要将优化代码正确地连接/插入到现有的 AOT 编译代码中。 [/澄清]

我不知道在运行时使用自适应优化重新编译热点需要什么信息。是否需要字节码来做到这一点?这将意味着更高的内存消耗作为更高性能的成本。

我不是这方面的专家,所以如果有任何假设是错误的,请告诉我。

参考JEP 295。它提到了不同的 AOT 模式,包括分层 AoT,它提供 C1 编译代码和分析检测,然后可以在运行时使用 C2 进行优化。