常用鏈接

          統計

          最新評論

          關于java的JIT知識(轉)

          什么是JIT

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

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

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

          JIT 編譯過程

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

          什么是JIT?

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

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

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

          JIT 編譯過程

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


          Graphic

           

          通過上面的解釋,我們了解了JIT的工作原理及過程,同樣也發現了個問題,由于JIT對每條字節碼都進行編譯,造成了編譯過程負擔過重。為了避免這種情況,當前的JIT只對經常執行的字節碼進行編譯,如循環等。

          需要說明的是,JIT并不總是奏效,不能期望JIT一定能夠加速你代碼執行的速度,更糟糕的是她有可能降低代碼的執行速度。這取決于你的代碼結構,當然很多情況下我們還是能夠如愿以償的。

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

          主站蜘蛛池模板: 新蔡县| 当阳市| 清镇市| 临洮县| 东平县| 宽城| 明溪县| 壤塘县| 礼泉县| 朔州市| 丰镇市| 辉南县| 安图县| 常山县| 嵊州市| 长海县| 临泽县| 潮安县| 扶余县| 大港区| 奎屯市| 新竹县| 象州县| 东宁县| 富平县| 漳浦县| 诏安县| 南郑县| 扬中市| 徐水县| 安多县| 当阳市| 汉沽区| 江陵县| 西宁市| 鄂伦春自治旗| 鹤峰县| 祁连县| 西和县| 治多县| 伊金霍洛旗|