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

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

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