Contents

JIT的动机基于“二八定律”,20%的热点代码占据了程序80%的执行时间

即使开启了JIT,也少不了代码编译和字节码解释的过程。JIT处理的是热点代码(hotspot code,或叫热门代码)。

热点代码就是频繁执行的代码块,比如循环里面的代码。JIT有一套逻辑判断是否热点代码。

Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
“mixed mode”代表是混合模式,也就是先解释执行,并逐步将热点代码代替为机器代码。
不使用编译器的模式叫“interpreted mode”;
优先使用编译器的模式叫“compiled mode”,compiled mode会优先采用编译方式执行程序,如果编译执行有问题就回退到解释执行。

HotSpot虚拟机中有两个编译器,一个是给客户端用的叫client Compiler,另一个是服务器用的叫Server Compiler。
一般的,把Client Compiler也叫C1编译器,Server Compiler叫C2编译器或Opto编译器。
虚拟机会根据自身版本与宿主机的硬件性能自动选择运行模式,也可以使用 “-client”或“-server”参数去强制指定虚拟机运行在Client模式或Server模式。