本文思路很清晰,分兩步走。第一步,老的即時編譯的缺陷致使新的編譯器孕育而生。第二步,具體講解Graal編譯器的特性。java
先啓動解釋編譯,分析出解釋屢次的代碼,使用c1編譯器進行編譯,再次分析c1編譯器編譯屢次的代碼,使用c2編譯器進行編譯。安全
c2編譯器是最重要的一環,由於c2編譯出高度優化的機器碼。
1.舊代碼難以擴展和維護
2.使用更多的JVM內聯函數,開發成本太大。函數
具體解釋第二點缺陷
JVM啓動的時候會檢測運行在哪一個處理器上,而且更具特定的處理器生成特定的內聯函數表,極大的運用了硬件的能力。這樣就致使對於特定的處理器須要特定的內聯表函數,就須要更多的內聯函數。因此致使開發成本和維護成本大。工具
更好的編譯Java代碼,那麼出發點就是JIT就是將字節碼轉換爲機器碼,在Java中就是從byte[]轉到另一個byte[],那麼轉換代碼可不能夠用java來寫。優化