为什么使用JIT与编译机器码相比Java更快?

为什么使用JIT与编译机器码相比Java更快?,第1张

为什么使用JIT与编译机器码相比Java更快?

任何AOT编译器的真正杀手是:

Class.forName(...)

这意味着您不能编写涵盖 所有
Java程序的AOT编译器,因为仅在运行时存在有关程序特性的信息。但是,您可以在Java的子集上执行此 *** 作,这是我认为gcj所做的。

另一个典型的例子是,如果发现JIT可以安全地在调用方法中直接内联诸如getX()之类的方法,并且可以将其撤消,即使程序员没有明确帮助,也可以将其撤消方法是最终的。JIT可以看到在正在运行的程序中没有重写给定的方法,因此在这种情况下可以将其视为最终方法。在下一次调用中可能会有所不同。


编辑2019年:Oracle引入了GraalVM,它允许在Java的一个子集(相当大的一个,但仍然是一个子集)上进行AOT编译,其主要要求是所有代码都可以在编译时使用。这允许Web容器的毫秒启动时间。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5489638.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存