溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java虛擬機(jī)即時(shí)編譯器技術(shù)JIT

發(fā)布時(shí)間:2020-06-01 19:16:13 來源:網(wǎng)絡(luò) 閱讀:221 作者:sxt程序猿 欄目:編程語言

Java虛擬機(jī)中有許多附加技術(shù)用以提升速度,尤其是與加載器操作相關(guān)的,被稱為“即時(shí)”(Just-In-Time,JIT)編譯器的技術(shù)。這種技術(shù)可以把程序全部或部分翻譯成本地機(jī)器碼(這本來是JVM的工作),程序運(yùn)行速度因此得以提升。當(dāng)需要裝載某個(gè)類時(shí),編譯器會(huì)先找到其.class文件,然后將該類的字節(jié)碼裝入內(nèi)存。此時(shí),有兩種方案可供選擇:

(1)一種就是讓即時(shí)編譯器編譯所有代碼。但這種做法有兩個(gè)缺陷:這種加載動(dòng)作散落在整個(gè)程序生命周期內(nèi),累加起來要花更多時(shí)間;并且會(huì)增加可執(zhí)行代碼的長(zhǎng)度(字節(jié)碼要比即時(shí)編譯器展開后的本地機(jī)器碼小很多),這將導(dǎo)致頁面調(diào)度,從而降低程序速度。

(2)另一種做法稱為惰性評(píng)估(lazy evaluation),意思是即時(shí)編譯器只在必要的時(shí)候才編譯代碼,這樣,從不會(huì)被執(zhí)行的代碼也許就壓根不會(huì)被JIT所編譯。新版JDK中的Java HotSpot技術(shù)就采用了類似方法,代碼每次被執(zhí)行的時(shí)候都會(huì)做一些優(yōu)化,所以執(zhí)行的次數(shù)越多,它的速度就越快。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI