JVM编译优化-即时编译器(JIT)
Java语言的“编译期”,可能指的是一个前端编译期,把*.java文件转变为 *.class文件的过程;也可能是虚拟机的后端运行期编译器(JIT)把字节码转变为机器码的过程,还可能是指使用静态编译器(AOT编译器,Ahead Of Time Compiler)直接把 java文件编译成本地机器码的过程。 编译期很广,我们这里讨论即时编译器,因为即使编译器,以下简称JIT,JIT在运行期的优化过程对于程序的运行更加重要。 JIT简介 Java程序最初是通过解释器来解释执行的,当虚拟器发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译为机器码,并进行各种层次的优化,完成这个任务的编译器成为即使编译器(JIT)。 简单说就是热点代码会被进行优化。 image.png 什么是热点代码? 被多次调用的方法:方法调用的多了,代码执行次数也多,成为热点代码很正常。 被多次执行的循环体:假如一个方法被调用的次数少,只有一次或两次,但方法内有个循环,一旦涉及到循环,部分代码执行的次数肯定多,这些多次执行的循环体内代码也被认...
