java的JIT 工作原理簡單介紹
1.JIT的工作原理圖

工作原理
當(dāng)JIT編譯啟用時(默認(rèn)是啟用的),JVM讀入.class文件解釋后,將其發(fā)給JIT編譯器。JIT編譯器將字節(jié)碼編譯成本機(jī)機(jī)器代碼。
通常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(); 是因為加快執(zhí)行的速度。由于JIT對每條字節(jié)碼都進(jìn)行編譯,造成了編譯過程負(fù)擔(dān)過重。為了避免這種情況,當(dāng)前的JIT只對經(jīng)常執(zhí)行的字節(jié)碼進(jìn)行編譯,如循環(huán)等.
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
servlet之cookie簡介_動力節(jié)點Java學(xué)院整理
Cookie技術(shù)誕生以來,它就成了廣大網(wǎng)絡(luò)用戶和Web開發(fā)人員爭論的一個焦點。下面這篇文章主要給大家介紹了關(guān)于servlet之cookie簡介的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
詳解Java中用于查找對象哈希碼值的hashCode()函數(shù)
Java中入HashMap等一些鍵值對應(yīng)的結(jié)構(gòu),基本上都可以用hashCode()來查找值,接下來我們就來詳解Java中用于查找對象哈希碼值的hashCode()函數(shù):2016-05-05
springboot與vue詳解實現(xiàn)短信發(fā)送流程
隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容2022-06-06
詳解如何在低版本的Spring中快速實現(xiàn)類似自動配置的功能
這篇文章主要介紹了詳解如何在低版本的Spring中快速實現(xiàn)類似自動配置的功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
Java中字符串截取方法詳解及實際應(yīng)用小結(jié)
java中截取字符串的常用方法是使用String類的substring方法,本文通過實例代碼給大家介紹Java中字符串截取方法詳解及實際應(yīng)用小結(jié),感興趣的朋友跟隨小編一起看看吧2024-12-12
@scope("prototype") @loadbalanced注解負(fù)載均衡失效問題
這篇文章主要為大家介紹了@scope("prototype") @loadbalanced注解負(fù)載均衡失效問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Mybatis下動態(tài)sql中##和$$的區(qū)別講解
今天小編就為大家分享一篇關(guān)于Mybatis下動態(tài)sql中##和$$的區(qū)別講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03

