Java虛擬機中有許多附加技術(shù)用以提升速度,尤其是與加載器操作相關(guān)的,被稱為“即時”(Just-In-Time,JIT)編譯器的技術(shù)。這種技術(shù)可以把程序全部或部分翻譯成本地機器碼(這本來是JVM的工作),程序運行速度因此得以提升。當需要裝載某個類時,編譯器會先找到其.class文件,然后將該類的字節(jié)碼裝入內(nèi)存。此時,有兩種方案可供選擇:
鳳縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,鳳縣網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為鳳縣上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的鳳縣做網(wǎng)站的公司定做!
(1)一種就是讓即時編譯器編譯所有代碼。但這種做法有兩個缺陷:這種加載動作散落在整個程序生命周期內(nèi),累加起來要花更多時間;并且會增加可執(zhí)行代碼的長度(字節(jié)碼要比即時編譯器展開后的本地機器碼小很多),這將導致頁面調(diào)度,從而降低程序速度。
(2)另一種做法稱為惰性評估(lazy evaluation),意思是即時編譯器只在必要的時候才編譯代碼,這樣,從不會被執(zhí)行的代碼也許就壓根不會被JIT所編譯。新版JDK中的Java HotSpot技術(shù)就采用了類似方法,代碼每次被執(zhí)行的時候都會做一些優(yōu)化,所以執(zhí)行的次數(shù)越多,它的速度就越快。