JIT編譯器概述

即時(shí)(JIT)編譯器是Java?運(yùn)行時(shí)環(huán)境的組件,可提高運(yùn)行時(shí)Java應(yīng)用程序的性能。

Java程序由類(lèi)組成,這些類(lèi)包含與平臺(tái)無(wú)關(guān)的字節(jié)碼,可以由JVM在許多不同的計(jì)算機(jī)體系結(jié)構(gòu)上解釋。在運(yùn)行時(shí),JVM加載類(lèi)文件,確定每個(gè)單個(gè)字節(jié)碼的語(yǔ)義,并執(zhí)行適當(dāng)?shù)挠?jì)算。解釋過(guò)程中額外的處理器和內(nèi)存使用情況意味著Java應(yīng)用程序比本地應(yīng)用程序執(zhí)行得更慢。JIT編譯器通過(guò)在運(yùn)行時(shí)將字節(jié)碼編譯為本機(jī)機(jī)器代碼來(lái)幫助提高Java程序的性能。

JIT編譯器默認(rèn)情況下處于啟用狀態(tài),并在調(diào)用Java方法時(shí)被激活。JIT編譯器將該方法的字節(jié)碼編譯為本地機(jī)器代碼,“及時(shí)”編譯以運(yùn)行。編譯方法后,JVM會(huì)直接調(diào)用該方法的已編譯代碼,而不是對(duì)其進(jìn)行解釋。從理論上講,如果編譯不需要處理器時(shí)間和內(nèi)存使用量,則編譯每種方法都可以使Java程序的速度接近本機(jī)應(yīng)用程序的速度。

JIT編譯確實(shí)需要處理器時(shí)間和內(nèi)存使用率。JVM首次啟動(dòng)時(shí),將調(diào)用數(shù)千種方法。即使程序最終達(dá)到了非常好的峰值性能,編譯所有這些方法也會(huì)嚴(yán)重影響啟動(dòng)時(shí)間。

在實(shí)踐中,方法不是在第一次調(diào)用時(shí)編譯的。對(duì)于每種方法,JVM維護(hù)一個(gè)調(diào)用計(jì)數(shù),每次調(diào)用該方法時(shí),該計(jì)數(shù)都會(huì)增加。JVM解釋一個(gè)方法,直到其調(diào)用計(jì)數(shù)超過(guò)JIT編譯閾值為止。因此,經(jīng)常使用的方法在JVM啟動(dòng)后立即進(jìn)行編譯,而較少使用的方法則在以后編譯,或者根本不編譯。JIT編譯閾值可幫助JVM快速啟動(dòng),并仍具有改進(jìn)的性能。精心選擇了閾值,以在啟動(dòng)時(shí)間和長(zhǎng)期性能之間獲得最佳平衡。

編譯方法后,其調(diào)用計(jì)數(shù)將重置為零,并且對(duì)該方法的后續(xù)調(diào)用將繼續(xù)增加其計(jì)數(shù)。當(dāng)方法的調(diào)用計(jì)數(shù)達(dá)到JIT重新編譯閾值時(shí),JIT編譯器將對(duì)其進(jìn)行第二次編譯,并使用比上一次編譯更大的優(yōu)化選擇。重復(fù)此過(guò)程,直到達(dá)到最大優(yōu)化級(jí)別。Java程序最繁忙的方法總是最積極地進(jìn)行優(yōu)化,從而最大程度地提高了使用JIT編譯器的性能。JIT編譯器還可以在運(yùn)行時(shí)測(cè)量操作數(shù)據(jù),并使用該數(shù)據(jù)來(lái)提高進(jìn)一步重新編譯的質(zhì)量。

可以禁用JIT編譯器,在這種情況下,將解釋整個(gè)Java程序。除了診斷或解決JIT編譯問(wèn)題外,不建議禁用JIT編譯器。

參考:
1.https://www.ibm.com/support/knowledgecenter/SSYKE2_7.1.0/com.ibm.java.aix.71.doc/diag/understanding/jit_overview.html
2.https://stackoverflow.com/questions/95635/what-does-a-just-in-time-jit-compiler-do

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容