1.簡介 Dalvik虛拟機是Android平台的核心,每一個Android應用都運作在一個獨立的Dalvik虛拟機上,并且每個Dalvik虛拟機都作為一個獨立的Linux程序執行,主要是防止在虛拟機奔潰時所有程式都被關閉。Dalvik可以支援.dex格式的檔案,而.dex格式是專門為Dalvik設計的一種壓縮格式,可以減少整體檔案尺寸,提高I/O操作的速度,适合記憶體和處理器速度有限的系統。 Dalvik虛拟機的主要作用是完成對象生命周期管理,記憶體回收,堆棧管理,線程管理,安全和異常管理等重要功能。
2.差別 ·Dalvik虛拟與JVM的差別: Dalvik與JVM特性差不多相似,不過兩者還是有一些差別的,其中最顯著的差別是它們具有不同的類檔案格式以及指令集。Dalvik虛拟機使用的是.dex格式的類檔案,而JVM使用的是.class格式的類檔案。 Dalvik虛拟機使用的指令集是基于寄存器的,而JVM使用的指令集是基于堆棧的。基于寄存器的指令需要指定源位址和目标位址,是以需要占用更多的指令空間,缺點就是資料緩沖更容易失效;JVM基于堆棧則需要更多的指令(主要是load和store指令),這也意味着要占用更多的CPU時間。
·.dex檔案與.class檔案的差別:一個.dex檔案可以包含若幹個類,是以.dex檔案可以将各個類中重複的字元串和其他常數隻儲存一次,進而節省了空間;而一個.class檔案值包括一個類。
·Dalvik與ART的差別:很長時間以來,Dalvik虛拟機都被開發者诟病,認為其是拖慢Android系統的根源,是以Android L推出時,谷歌用傳聞已久的ART替代了Dalvik。 ART即Android Runtime,與Dalvik不同之處是,在Dalvik下,應用每次運作的時候,位元組碼都需要通過JIT(即時編譯器)轉換為機器碼,這會拖慢應用的運作效率;是以在ART環境中,應用在第一次安裝的時候,位元組碼就會預先編譯成機器碼,使其成為真正的本地應用,這個過程也叫AOT(預編譯),通過這樣加速了應用的啟動和執行,但是缺點是,安裝的時間可能過長。