GRAALVM可以提前汇编与自适应优化相结合



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

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

及时编译:在需要时在运行时将字节码的一部分编译到本机代码中。保留汇编。汇编的绩效开销/罚款。在运行时介绍了自适应优化的可能性,这是在静态汇编之前不可能的。

热点:只有经常执行的零件才能编译JIT。其余的被解释。

现在,graalvm可以在bytecode将本机代码提前编译。

中。

是否可以提前编译字节码,并在热点上进行自适应优化(通常在Special中使用GraAlVM(?

[澄清]我的意思不是将字节码的部分编译到本机代码,而是将其他零件作为在运行时执行热点JIT编译的字节码。这就是IBM的Excelsior Jet Java实施似乎可以做到的,到目前为止我已经阅读了。我的意思是AOT编译整个字节码并在运行时替换热点零件,并通过适应性优化的热点重新编译。这需要将优化的代码正确连接/插入现有AOT编译的代码。[/澄清]

我不知道在运行时重新编译热点需要哪些信息。是否需要字节码来执行此操作?这将意味着更高的记忆消耗是提高性能的成本。

我不是这个专家,所以请告诉我是否有任何假设是错误的。

请参阅JEP295。它提到了不同的AOT模式,包括使用分析仪器提供C1编译的代码的分层AOT,然后在运行时可以用C2进行优化。

最新更新