【轉自: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工作原理圖
對于Java代碼,剛開始都是被編譯器編譯成字節碼文件,然后字節碼文件會被交由JVM解釋執行,所以可以說Java本身是一種半編譯半解釋執行的語言。采用了JIT compile技術,將運行頻率很高的字節碼直接編譯為機器指令執行以提高性能,所以當字節碼被JIT編譯為機器碼的時候,要說它是編譯執行的也可以。也就是說,運行時,部分代碼可能由JIT翻譯為目標機器指令(以method為翻譯單位,還會保存起來,第二次執行就不用翻譯了)直接執行。
參考鏈接:
1.http://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/