Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發環境 >> Dalvik VM (DVM) 與Java VM (JVM)之間有哪些區別

Dalvik VM (DVM) 與Java VM (JVM)之間有哪些區別

編輯:Android開發環境

       Dalvik虛擬機存在於Android系統,JVM是Java虛擬機,兩者都是虛擬機,它們之間有什麼區別呢?本文就對兩者進行比較,講述它們的不同。

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

       1、Dalvik 和標准 Java 虛擬機(JVM)的首要差別

       Dalvik 基於寄存器,而 JVM 基於棧。基於寄存器的虛擬機對於更大的程序來說,在它們編譯的時候,花費的時間更短。  

       2、Dalvik 和 Java 字節碼的區別

       Dalvik執行.dex格式的字節碼,而JVM執行.class格式的字節碼。

       3、Dalvik 和 Java SDK的SDK不同。

       4、Dalvik 和 Java 運行環境的區別    

       Dalvik 經過優化,允許在有限的內存中同時運行多個虛擬機的實例,並且每一個Dalvik 應用作為一個獨立的Linux 進程執行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉。

       Dalvik虛擬機在android2.2之後使用JIT (Just-In-Time)技術,與傳統JVM的JIT並不完全相同, 

       Dalvik虛擬機有自己的 bytecode,並非使用 Java bytecode。

       還有以下幾點:

       1、Dalvik主要是完成對象生命周期管理,堆棧管理,線程管理,安全和異常管理,以及垃圾回收等等重要功能。   

       2、Dalvik負責進程隔離和線程管理,每一個Android應用在底層都會對應一個獨立的Dalvik虛擬機實例,其代碼在虛擬機的解釋下得以執行。   

       3、不同於Java虛擬機運行java字節碼,Dalvik虛擬機運行的是其專有的文件格式Dex。   

       4、dex文件格式可以減少整體文件尺寸,提高I/O操作的類查找速度。   

       5、odex是為了在運行過程中進一步提高性能,對dex文件的進一步優化。   

       6、所有的Android應用的線程都對應一個Linux線程,虛擬機因而可以更多的依賴操作系統的線程調度和管理機制。   

       7、有一個特殊的虛擬機進程Zygote,他是虛擬機實例的孵化器。它在系統啟動的時候就會產生,它會完成虛擬機的初始化、庫的加載、預制類庫和初始化的操作。如果系統需要一個新的虛擬機實例,它會迅速復制自身,以最快的速度提供給系統。對於一些只讀的系統庫,所有虛擬機實例都和Zygote共享一塊內存區域。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved