1 Java平臺java
Java採用的是解釋和編譯混合的模式。它首先經過javac將源碼編譯成字節碼文件class.而後在運行的時候經過解釋器或者JIT將字節碼轉換成最終的機器碼。
只是用解釋器的缺點:拋棄了JIT可能帶來的性能優點。若是代碼沒有被JIT編譯的話,再次運行時須要重複解析。
只用JIT的缺點:
須要將所有的代碼編譯成本地機器碼。要花更多的時間,JVM啓動會變慢很是多;
增長可執行代碼的長度(字節碼比JIT編譯後的機器碼小不少),這將致使頁面調度,從而下降程序的速度。
有些JIT編譯器的優化方式,好比分支預測,若是不進行profiling,每每並不能進行有效優化。
所以,HotSpot採用了惰性評估(Lazy Evaluation)的作法,根據二八定律,消耗大部分系統資源的只有那一小部分的代碼(熱點代碼),而這也就是JIT所須要編譯的部分。JVM會根據代碼每次被執行的狀況收集信息並相應地作出一些優化,所以執行的次數越多,它的速度就越快。
JDK 9引入了一種新的編譯模式AOT(Ahead of Time Compilation),它是直接將字節碼編譯成機器碼,這樣就避免了JIT預熱等各方面的開銷。JDK支持分層編譯和AOT協做使用。性能
2 exception 和 error優化
3 final finally finalizeui
4 引用: 強 軟 弱 虛lua
5 string stringbuilder stringbuffer3d