JIT是just in time,即時編譯技術。使用該技術,可以加速java程序的執行速度。下面,就對該技術作個簡單的講解。java
首先,咱們你們都知道,一般javac將程序源代碼編譯,轉換成java字節碼,JVM經過解釋字節碼將其翻譯成對應的機器指令,逐條讀入,逐條解釋翻譯。很顯然,通過解釋執行,其執行速度必然會比可執行的二進制字節碼程序慢。爲了提升執行速度,引入了JIT技術。翻譯
在運行時JIT會把翻譯過的機器碼保存起來,已備下次使用,所以從理論上來講,採用該JIT技術能夠,能夠接近之前純編譯技術。下面我看看,JIT的工做過程。編譯器
JIT 編譯過程
當JIT編譯啓用時(默認是啓用的),JVM讀入.class文件解釋後,將其發給JIT編譯器。JIT編譯器將字節碼編譯成本機機器代碼編譯
咱們瞭解了JIT的工做原理及過程,一樣也發現了個問題,因爲JIT對每條字節碼都進行編譯,形成了編譯過程負擔太重。爲了不這種狀況,當前的JIT只對常常執行的字節碼進行編譯,如循環等。class
須要說明的是,JIT並不老是奏效,不能指望JIT必定可以加速你代碼執行的速度,更糟糕的是她有可能下降代碼的執行速度。這取決於你的代碼結構,固然不少狀況下咱們仍是可以如願以償的。原理