常用鏈接

          統(tǒng)計

          最新評論

          關(guān)于java的JIT知識(轉(zhuǎn))

          什么是JIT

          JIT是just in time,即時編譯技術(shù)。使用該技術(shù),能夠加速java程序的執(zhí)行速度。下面,就對該技術(shù)做個簡單的講解。

          首先,我們大家都知道,通常javac將程序源代碼編譯,轉(zhuǎn)換成java字節(jié)碼,JVM通過解釋字節(jié)碼將其翻譯成對應(yīng)的機器指令,逐條讀入,逐條解釋翻譯。很顯然,經(jīng)過解釋執(zhí)行,其執(zhí)行速度必然會比可執(zhí)行的二進(jìn)制字節(jié)碼程序慢。為了提高執(zhí)行速度,引入了JIT技術(shù)。

          在運行時JIT會把翻譯過的機器碼保存起來,已備下次使用,因此從理論上來說,采用該JIT技術(shù)可以,可以接近以前純編譯技術(shù)。下面我看看,JIT的工作過程。

          JIT 編譯過程

          當(dāng)JIT編譯啟用時(默認(rèn)是啟用的),JVM讀入.class文件解釋后,將其發(fā)給JIT編譯器。JIT編譯器將字節(jié)碼編譯成本機機器代碼,下圖展示了該過程。

          什么是JIT

          JIT是just in time,即時編譯技術(shù)。使用該技術(shù),能夠加速java程序的執(zhí)行速度。下面,就對該技術(shù)做個簡單的講解。

          首先,我們大家都知道,通常javac將程序源代碼編譯,轉(zhuǎn)換成java字節(jié)碼,JVM通過解釋字節(jié)碼將其翻譯成對應(yīng)的機器指令,逐條讀入,逐條解釋翻譯。很顯然,經(jīng)過解釋執(zhí)行,其執(zhí)行速度必然會比可執(zhí)行的二進(jìn)制字節(jié)碼程序慢。為了提高執(zhí)行速度,引入了JIT技術(shù)。

          在運行時JIT會把翻譯過的機器碼保存起來,已備下次使用,因此從理論上來說,采用該JIT技術(shù)可以,可以接近以前純編譯技術(shù)。下面我看看,JIT的工作過程。

          JIT 編譯過程

          當(dāng)JIT編譯啟用時(默認(rèn)是啟用的),JVM讀入.class文件解釋后,將其發(fā)給JIT編譯器。JIT編譯器將字節(jié)碼編譯成本機機器代碼,下圖展示了該過程。


          Graphic

           

          通過上面的解釋,我們了解了JIT的工作原理及過程,同樣也發(fā)現(xiàn)了個問題,由于JIT對每條字節(jié)碼都進(jìn)行編譯,造成了編譯過程負(fù)擔(dān)過重。為了避免這種情況,當(dāng)前的JIT只對經(jīng)常執(zhí)行的字節(jié)碼進(jìn)行編譯,如循環(huán)等。

          需要說明的是,JIT并不總是奏效,不能期望JIT一定能夠加速你代碼執(zhí)行的速度,更糟糕的是她有可能降低代碼的執(zhí)行速度。這取決于你的代碼結(jié)構(gòu),當(dāng)然很多情況下我們還是能夠如愿以償?shù)摹?/p>

          posted on 2009-01-13 14:18 九寶 閱讀(2140) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 临澧县| 岑巩县| 壶关县| 江安县| 洛阳市| 东海县| 威宁| 镶黄旗| 乐业县| 青川县| 磐安县| 麻江县| 久治县| 朝阳市| 深泽县| 高邑县| 新竹县| 罗源县| 舒城县| 白城市| 宜川县| 大邑县| 肇庆市| 卢湾区| 绥德县| 峡江县| 海林市| 剑河县| 阳信县| 黑龙江省| 板桥市| 盐城市| 沾益县| 曲阳县| 莆田市| 武宣县| 陇川县| 太白县| 台中县| 隆林| 永丰县|