开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情
什么是JIT?
要想了解什么是JIT,首先需要了解一下 jvm 的解释执行,解释执行是java代码的一般执行方式,通过解释器逐行的进行解释到我们本地的机器指令,就是以下红色部分,java 代码通过执行引擎解释成本地机器指令从而达到运行代码的效果。
这样的执行相对而言会比较慢,所以 jvm 它的执行引擎在执行的过程中还有另外一种情况,就是如果当前执行的代码是热点代码,什么叫热点代码呢,比如说一个方法调用了一千次,或者某个循环调用了多次,那么这个时候 jvm 就会把这类的代码判定为热点代码。
对于执行过程中如果执行的是热点代码的话,这个时候就会走另外一个JIT即时编译器的方案,以下红色部分,其中的解释器就换成了 JIT 即时编译器了。
这个 JIT 即时编译器是干嘛的呢,它的工作就是把我们刚才那种热点代码直接全部翻译成本地的机器指令,这个时候就不需要进行逐行执行了。
因为这段代码需要重复执行很多很多次,如果每次都走解释执行的话,那么会在解释的过程中消耗掉大量的时间、性能,这个时候走 JIT 即时编译器就不一样了。
JIT 直接编译成本地的机器指令,每次执行这类代码的时候就不需要进行解释,而是可以直接可以去执行本地的机器指令了,从而提高 Java代码在运行过程中的执行效率。
这就是 JVM 中 JIT 的作用。