1.JIT的工作原理圖
工作原理
當(dāng)JIT編譯啟用時(默認(rèn)是啟用的)世曾,JVM讀入.class文件解釋后已烤,將其發(fā)給JIT編譯器鞠眉。JIT編譯器將字節(jié)碼編譯成本機(jī)機(jī)器代碼。
想要學(xué)習(xí)最新的Java編程開發(fā)知識,可以加我微信免費(fèi)領(lǐng)取學(xué)習(xí)資料:tangniu520666芬首,備注“4”
通常javac將程序源代碼編譯熄诡,轉(zhuǎn)換成java字節(jié)碼临燃,JVM通過解釋字節(jié)碼將其翻譯成對應(yīng)的機(jī)器指令浴捆,逐條讀入蒜田,逐條解釋翻譯。很顯然选泻,經(jīng)過解釋執(zhí)行冲粤,其執(zhí)行速度必然會比可執(zhí)行的二進(jìn)制字節(jié)碼程序慢。為了提高執(zhí)行速度页眯,引入了JIT技術(shù)色解。
在運(yùn)行時JIT會把翻譯過的機(jī)器碼保存起來,已備下次使用餐茵,因此從理論上來說科阎,采用該JIT技術(shù)可以,可以接近以前純編譯技術(shù)忿族。
2.相關(guān)知識
JIT是just in time,即時編譯技術(shù)锣笨。使用該技術(shù),能夠加速java程序的執(zhí)行速度道批。
JIT并不總是奏效错英,不能期望JIT一定能夠加速你代碼執(zhí)行的速度,更糟糕的是她有可能降低代碼的執(zhí)行速度隆豹。這取決于你的代碼結(jié)構(gòu)椭岩,當(dāng)然很多情況下我們還是能夠如愿以償?shù)摹?/p>
從上面我們知道了之所以要關(guān)閉JITjava.lang.Compiler.disable(); 是因?yàn)榧涌靾?zhí)行的速度。由于JIT對每條字節(jié)碼都進(jìn)行編譯璃赡,造成了編譯過程負(fù)擔(dān)過重判哥。為了避免這種情況,當(dāng)前的JIT只對經(jīng)常執(zhí)行的字節(jié)碼進(jìn)行編譯碉考,如循環(huán)等.