JIT学习笔记

【转自:http://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/】

JIT编译器在JVM中的运作原理:

JIT简介

JIT是just in time的缩写,也就是即时编译编译器。使用即时编译器技术,能够加速Java程序的执行速度。下面,就对该编译器技术做个简单的讲解。

首 先,我们大家都知道,通常通过javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢很多。为了提高执行速度,引入了JIT技术。

在运行时JIT会把翻译过的机器码保存起来,以备下次使用,因此从理论上来说,采用该JIT技术可以接近以前纯编译技术。下面我们看看,JIT的工作过程。

JIT编译过程

当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码,下图展示了该过程。

图1. JIT工作原理图


JIT学习笔记_第1张图片

对于Java代码,刚开始都是被编译器编译成字节码文件,然后字节码文件会被交由JVM解释执行,所以可以说Java本身是一种半编译半解释执行的语言。采用了JIT compile技术,将运行频率很高的字节码直接编译为机器指令执行以提高性能,所以当字节码被JIT编译为机器码的时候,要说它是编译执行的也可以。也就是说,运行时,部分代码可能由JIT翻译为目标机器指令(以method为翻译单位,还会保存起来,第二次执行就不用翻译了)直接执行。

参考链接:

1.http://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/

你可能感兴趣的:(JIT学习笔记)