Android 虛擬機 Davlik

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字節碼。web

此外, Dalvik被設計來知足可高效運行多種虛擬機實例。數據結構

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

相關文章
相關標籤/搜索