即时编译器(运行时编译,属于动态编译),编译成本地代码,执行效率高。(类比为 坐公交,速度快,但是需要”等公交”(编译))。虽然带来了缺陷,就是在执行之前需要编译时间。

这里说说,jit存在的背景:

  1. 通过搜集runtime信息, 识别出程序的热点代码(2/8原则)

限制条件:

  • 热点代码才使用,并且符合编译条件时,而不是所有代码都编译,因为有的代码很少执行,确要损耗编译时间。
  • 有个思路,是AOT。但是不确定运用场景,但是有限制条件

:: 分类

  • C1 —client, 更快的编译速度
  • C2 —server, 更好的编译质量
  • Grall ,实验性

问题

Q: 为什么不AOT, 这样就不需要在执行时进行编译了?
A: 有提前AOT的编译器,这就要涉及到有哪些场景不能进行提前编译。

解释器是相对的,