天天看點

Dalvik VM介紹

Dalvik VM介紹

Dalvik虛拟機是Google的用于移動裝置的Android平台的一個主要部分。虛拟機可運作Java平台應用程式,這些應用程式被轉換成緊湊的Dalvik可執行格式(.dex),該格式适合記憶體和處理器速度受限的系統。

Dalvik虛拟機的作者是丹伯恩斯坦(Dan Bornstein)。

與大多數虛拟機和真正的Java虛拟機不同,前者是棧機(stack machine),而Dalvik VM是基于寄存器的架構。就像CISC與RISC的争論,這兩種方式的相對優點是一個不斷争論的話題,且有時技術界限會變得模糊不清。此外,兩種方法的相對優勢取決于所選擇的解釋/編譯政策。但是,總的來說,基于stack的機器必須使用指令來載入stack上的資料,或使用指令來操縱資料,是以與基于寄存器的機器相比,需要的指令更多。然而,在寄存器的指令必須編碼源和目的地寄存器,是以往往指令更大。

一個名為dx的工具,它用于轉換Java的.class檔案到.dex格式。多個類檔案可包含到單個的.dex檔案中。重複的、可用于多個類的字元串和其它常量在轉換到.dex格式時輸出到保留白間。Java位元組碼還可轉換成可選擇的、Delvik VM使用的指令集。一個未壓縮的.dex檔案在檔案大小方面往往比從同樣的.class檔案壓縮成的.jar檔案更小。

當Dalvik可執行檔案安裝到移動裝置時,它們是可以被修改的。為了進一步的優化,在某些資料、簡單資料結構和内聯的函數庫中的位元組順序可以互換,例如空類對象被短路。

為滿足低記憶體要求而不斷優化, Dalvik虛拟機有一些獨特的、有别于其它标準虛拟機的特征:

(1)虛拟機很小,使用的空間也小;

(2)Dalvik沒有JIT編譯器;

(3)常量池已被修改為隻使用32位的索引,以簡化解釋器;

(4)它使用自己的位元組碼,而非Java位元組碼。

此外, Dalvik被設計來滿足可高效運作多種虛拟機執行個體。

Dalvik虛拟機在Android架構中的位置

Dalvik VM介紹

繼續閱讀