久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Dalvik

來自站長百科
跳轉至: 導航、? 搜索

DalvikGoogle公司自己設計用于Android平臺的Java虛擬機。Dalvik虛擬機是Google等廠商合作開發(fā)的Android移動設備平臺的核心組成部分之一。它可以支持已轉換為 .dex(即Dalvik Executable)格式的Java應用程序的運行,.dex格式是專為Dalvik設計的一種壓縮格式,適合內(nèi)存處理器速度有限的系統(tǒng)。Dalvik 經(jīng)過優(yōu)化,允許在有限的內(nèi)存中同時運行多個虛擬機的實例,并且每一個Dalvik 應用作為一個獨立的Linux 進程執(zhí)行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉。

Dalvik架構[ ]

名為dx工具是用來轉換Java class成為DEX格式, 但不是全部。多個類別包含在一個dex文件之中。多個類別中重復的字串和其他常數(shù)包括會存放在DEX之中只有一次,以節(jié)省空間。Java字節(jié)碼(betecode)轉換成Dalvik虛擬機所使用的替代指令集。一個未壓縮dex文件通常是稍稍小于一個已經(jīng)壓縮.Jar檔。再次安裝到行動設備之時,可能會被修改的Dalvik可執(zhí)行檔。為了獲得進一步的最佳化,端序(byte order)可能會在一定的數(shù)據(jù)交換,簡單的數(shù)據(jù)結構和函數(shù)庫,可內(nèi)聯(lián)(linked inline),空的類別物件可能會短路。當Android啟動時,Dalvik VM 監(jiān)視所有的程序(APK),并且創(chuàng)建依存關系樹,為每個程序優(yōu)化代碼并存儲在Dalvik緩存中。Dalvik第一次加載后會生成Cache文件,以提供下次快速加載,所以第一次會變得很慢。Dalvik直譯器采用預先算好的Goto位址,基于每個指令集OpCode,都固定以64bytes為Memory Alignment。這樣可以節(jié)省一個指令集OpCode后,要進行查表的時間。為了強化功能, Dalvik還提供了Fast Interpreter。

Dalvik優(yōu)勢[ ]

  • Dalvik主要是完成對象生命周期管理,堆棧管理,線程管理,安全和異常管理,以及垃圾回收等等重要功能。   
  • Dalvik負責進程隔離和線程管理,每一個Android應用在底層都會對應一個獨立的Dalvik虛擬機實例,其代碼在虛擬機的解釋下得以執(zhí)行。   
  • 不同于Java虛擬機運行java字節(jié)碼,Dalvik虛擬機運行的是其專有的文件格式Dex   
  • dex文件格式可以減少整體文件尺寸,提高I/O操作的類查找速度。   
  • odex是為了在運行過程中進一步提高性能,對dex文件的進一步優(yōu)化。   
  • 所有的Android應用的線程都對應一個Linux線程,虛擬機因而可以更多的依賴操作系統(tǒng)的線程調(diào)度和管理機制   
  • 有一個特殊的虛擬機進程Zygote,他是虛擬機實例的孵化器。它在系統(tǒng)啟動的時候就會產(chǎn)生,它會完成虛擬機的初始化,庫的加載,預制類庫和初始化的操作。如果系統(tǒng)需要一個新的虛擬機實例,它會迅速復制自身,以最快的數(shù)據(jù)提供給系統(tǒng)。對于一些只讀的系統(tǒng)庫,所有虛擬機實例都和Zygote共享一塊內(nèi)存區(qū)域。

Dalvik差異[ ]

  • Dalvik虛擬機早期并沒有使用JIT(Just-In-Time)技術. 從 Android 2.2 開始, Dalvik 虛擬機也支持 JIT.
  • Dalvik虛擬機有自己的bytecode, 并非使用 Java bytecode.
  • Dalvik 基于暫存器(register),而 JVM 基于堆棧(stack)。
  • Dalvik VM 透過 Zygote 進行Class Preloading,Zygote會完成虛擬機的初始化,也是與 JVM 不同之處。

Dalvik影響[ ]

Dalvik的誕生也導致人們開始憂慮Java平臺的第一次大規(guī)模的分道揚鑣或許已經(jīng)是進行時了——有人已經(jīng)把Davlik和微軟的JVM以及Sun微軟的訴訟聯(lián)系起來,看Google身上是否也會發(fā)生類似事情;另外一些人則指出,Google并沒有宣稱Dalvik是一個Java實現(xiàn),而微軟卻是這樣做的。Sun也對可能帶來的陣營分裂表達了憂慮情緒,并提出和Google合作來保證Dalvik和JVM之間的兼容性——Google對此的解釋是,Dalvik是對解決目前Java ME平臺上分裂的一次嘗試,也是為了提供一個擁有較少限制許可證的平臺。甚至還有人懷疑這是否是Sun和Google兩大陣營對Java之未來的一次大規(guī)模較量。

相關詞條[ ]

參考來源[ ]