一、JIT
即时(Just-In-Time,JIT)编译器是 Java 虚拟机的核心。对 JVM 性能影响最大的莫过于编译器,其会有选择的对Java的字节码进行编译执行或解释执行。
1.1 热点编译
在实际情况下,程序只有一部分代码被经常执行,而程序的性能就取决于这些代码执行的速度。这些关键代码段被称为应用的热点,代码执行得越多就被认为是越热。
JVM在面对热点代码时就会对其进行编译,但是如果不是热点代码那编译完全就是浪费时间。对于只执行一次的代码,解释执行 Java 字节码比先编译然后执行的速度快
1.2 编译阈值
编译是基于两种 JVM 计数器的:
- 方法调用计数器
- 方法中的循环回边计数器
JVM 执行某个 Java 方法时,会检查该方法的两种计数器总数是否达到编译阈值,然后判定该方法是否适合编译。如果适合,该方法就进入编译队列。这种编译没有正式的名称,通常叫标准编译。
二、JIT编译器调优
所谓编译器调优,其实就只是为目标机器上的 Java 选择正确的 JVM 和编译器开关。
编译器版本:
- 32 位 client 编译器(-client )
- 32 位 server 编译器(-server )
- 64 位 serv