本人新手,之前學過JAVA,現在開始接觸安卓,安卓5.0之后采用了新的虛擬機ART,在ART 環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,這樣的話,應用的啟動(首次)和執行都會變得更加快速。對于JVM,java程序每次執行時都要通過JVM解釋成為本地機器碼,JAVA會不會也采用這個思路?在程序安裝或者第一次運行時,保存生成的機器碼,之后的每次執行都運行機器碼,這樣效率不就提高了很多了嗎?想知道JAVA JVM將來會不會也采用這種模式?
2 回答

千萬里不及你
TA貢獻1784條經驗 獲得超9個贊
你理解的java==oracle出的java,其實其他公司也有做jvm(比如說ibm,比如說開源組織openjdk),其中一款jvm(我忘記名字了)就是把所有代碼都做JIT。

翻過高山走不出你
TA貢獻1875條經驗 獲得超3個贊
JVM中采用了JIT,若某代碼執行頻率達到一個闊值的時,JVM會事先將這部分代碼編譯好。
可了解下 JAVA JIT(just in time)
java->動態語言: 解釋性,但由于性能的考慮,所以加入了JIT
java->跨平臺:java -> .class,無法直接機器碼
樓主可以里了解下CHROME V8,他就是沒有使用中間代碼,直接編譯成機器碼,然后動態的修改一些代碼,V8開發者也是jvm hotspot開發者之一,V8的很多設計都借鑒了JAVA的思想!
添加回答
舉報
0/150
提交
取消