天天看點

android開發之Dalvik VM與Java VM 以及 Dalvik模式和ART模式

Dalvik VM存在于Android系統,Java VM是Java虛拟機,兩者都是虛拟機,它們之間有什麼差別呢?

Dalvik虛拟機是Google等廠商合作開發的Android移動裝置平台的核心組成部分之一。它可以支援已轉換為.dex(即Dalvik Executable)格式的Java應用程式的運作,.dex格式是專為Dalvik設計的一種壓縮格式,适合記憶體和處理器速度有限的系統。(dx 是一套工具,可以将 Java .class 轉換成 .dex 格式. 一個dex檔通常會有多個.class。由于dex有時必須進行最佳化,會使檔案大小增加1-4倍,以ODEX結尾。)

1.DVM基于寄存器,而JVM基于棧.基于寄存器的虛拟機對于更大的程式來說,在它們編譯的時候,花費的時間更短.

2.不同于JVM執行.class格式的位元組碼,DVM執行.dex格式的位元組碼,dex檔案格式可以減少整體檔案尺寸,提高I/O操作的類查找速度,DVM有自己的bytecode并非使用Java bytecode.

(odex是為了在運作過程中進一步提高性能,對dex檔案的進一步優化。)

那麼,DVM和JVM的差別大緻的說明了一下,我相信大家心裡都有底了,是以接下來就和大家一起來探讨Dalvik模式和ART模式!

android開發之Dalvik VM與Java VM 以及 Dalvik模式和ART模式

2014年6月25日,Android L 将正式亮相于召開的谷歌I/O大會,Android L 改動幅度較大,谷歌将直接删除Dalvik,代替它的是傳聞已久的ART。

最新的安卓4.4系統中引入了全新的ART模式嗎,相比之前流行已久的Dalvik模式有了很大的改變。最近看到不少安卓手機朋友在問ART與Dalvik哪個好這樣的問題,是以筆者今天為大家制作了以下這張ART模式和Dalvik模式差別對比圖表,通過對比,可以一眼看出 ART模式和Dalvik模式之間的差別。

android開發之Dalvik VM與Java VM 以及 Dalvik模式和ART模式

總結:

1.為了Android系統的相容性,使用Dalvik模式在每次運作應用時都需要一次編譯,這樣一來程式的執行效率就大大下降.

2.ART(Android Run Time)模式與Dalvik模式最大的不同在于,在啟用ART模式後,系統在安裝應用的時候會進行一次預編譯,在安裝應用程式時會講代碼轉換為機器語言存儲在本地,這樣在運作程式時就不會每次都進行一次編譯了,執行效率也就大大的提升,但是在相容性方面和預編譯後的容量方面ART還需要多多思考思考,優化優化!!!!