JIT vs 解释器:
尽管解释器启动时间更快,占用内存更小,但随着时间的推移,编译器逐渐发挥作用,把热点代码编译成本地代码之后,可以获得更高的执行效率。
解释器可以作为编译激进优化的一个逃生门,当编译器的激进优化不成立时,可以通过逆优化退回到解释模式,如下图所示。
Hotspot虚拟机中内置了2个编译器Client Compiler (C1)和Server Compiler (C2),默认情况下,采用解释器和编译器配合的方式工作,具体使用哪一个编译器,取决于虚拟机的运行模式。用户可以通过-client 或–server强制指定虚拟机的编译模式。