fbpx
维基百科

Dalvik虚拟机

Dalvik虚拟机,是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即「Dalvik Executable」)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压缩格式,适合内存处理器速度有限的系统。Dalvik由Dan Bornstein编写的,名字来源于他的祖先曾经居住过的小渔村達爾維克Dalvík),位于冰島埃亚峡湾

Dalvik执行文件
扩展名.dex

大多数虚拟机包括JVM都是一種堆疊機器,而Dalvik虚拟机则是寄存器机。两种架构各有优劣,一般而言,基于堆疊的机器需要更多指令,而基于寄存器的机器指令更长。

Android 5.0版起,Android Runtime(ART)取代Dalvik成為系統內預設虛擬機。

架構

dx工具是一种用來轉換Java class成為DEX格式的工具。多個类被包含在一個dex文件之中。各個类中重複的字串和其他常數只在DEX中存放一次,以節省空間。Java字節碼(bytecode)被轉換成Dalvik虛擬機所使用的替代指令集。一個未壓縮dex文件通常稍小於一個已經壓縮的.jar檔。

安裝到行動設備之時,Dalvik可執行檔可能會被修改。為了獲得進一步优化,虚拟机可能會调整文件内部分数据的端序内联一些函数和简单的结构体、并短路掉一些不必要的操作。

当Android启动时,Dalvik VM监视所有的程序(APK),并且创建依存关系树,为每个程序优化代码并存储在Dalvik缓存中。Dalvik第一次加载后会生成Cache文件,以提供下次快速加载,所以第一次會很慢。

Dalvik直譯器採用預先算好的Goto位址,每個指令对内存的访问都在64字节边界上对齊。這樣可以節省一個指令後進行查表的時間。為了強化功能, Dalvik還提供了快速翻译器(Fast Interpreter)。[來源請求]

dx

dx是一套工具,可以將Java .class轉換成.dex格式。一個dex檔通常會有多個.class。由於dex有時必須進行优化,會使檔案大小增加1-4倍,以ODEX结尾。

差異

  • Dalvik虚拟机早期并没有使用即时编译(JIT)技术。从Android 2.2开始,Dalvik虚拟机也支持JIT。
  • Dalvik虚拟机有自己的字节码,並非使用Java字节码。
  • Dalvik基于暫存器,而JVM基于堆疊。
  • Dalvik VM透過Zygote進行類別的预加载,Zygote会完成虚拟机的初始化,也是與JVM不同之處。

参考资料

dalvik虚拟机, 是google等厂商合作开发的android移动设备平台的核心组成部分之一, 它可以支持已转换为, dalvik, executable, 格式的java应用程序的运行, dex格式是专为dalvik设计的一种压缩格式, 适合内存和处理器速度有限的系统, dalvik由dan, bornstein编写的, 名字来源于他的祖先曾经居住过的小渔村達爾維克, dalvík, 位于冰島埃亚峡湾, dalvik原作者dan, bornstein源代码库android, googlesource, pla. Dalvik虚拟机 是Google等厂商合作开发的Android移动设备平台的核心组成部分之一 它可以支持已转换为 dex 即 Dalvik Executable 格式的Java应用程序的运行 dex格式是专为Dalvik设计的一种压缩格式 适合内存和处理器速度有限的系统 Dalvik由Dan Bornstein编写的 名字来源于他的祖先曾经居住过的小渔村達爾維克 Dalvik 位于冰島埃亚峡湾 Dalvik原作者Dan Bornstein源代码库android wbr googlesource wbr com wbr platform wbr dalvik操作系统Linux系統平台Android类型虚拟机许可协议Apache License 2 0网站https source android com devices tech dalvik index htmlDalvik执行文件扩展名 dex大多数虚拟机包括JVM都是一種堆疊機器 而Dalvik虚拟机则是寄存器机 两种架构各有优劣 一般而言 基于堆疊的机器需要更多指令 而基于寄存器的机器指令更长 從Android 5 0版起 Android Runtime ART 取代Dalvik成為系統內預設虛擬機 目录 1 架構 2 dx 3 差異 4 参考资料架構 编辑dx工具是一种用來轉換Java class成為DEX格式的工具 多個类被包含在一個dex文件之中 各個类中重複的字串和其他常數只在DEX中存放一次 以節省空間 Java字節碼 bytecode 被轉換成Dalvik虛擬機所使用的替代指令集 一個未壓縮dex文件通常稍小於一個已經壓縮的 jar檔 安裝到行動設備之時 Dalvik可執行檔可能會被修改 為了獲得進一步优化 虚拟机可能會调整文件内部分数据的端序 内联一些函数和简单的结构体 并短路掉一些不必要的操作 当Android启动时 Dalvik VM监视所有的程序 APK 并且创建依存关系树 为每个程序优化代码并存储在Dalvik缓存中 Dalvik第一次加载后会生成Cache文件 以提供下次快速加载 所以第一次會很慢 Dalvik直譯器採用預先算好的Goto位址 每個指令对内存的访问都在64字节边界上对齊 這樣可以節省一個指令後進行查表的時間 為了強化功能 Dalvik還提供了快速翻译器 Fast Interpreter 來源請求 dx 编辑dx是一套工具 可以將Java class轉換成 dex格式 一個dex檔通常會有多個 class 由於dex有時必須進行优化 會使檔案大小增加1 4倍 以ODEX结尾 差異 编辑Dalvik虚拟机早期并没有使用即时编译 JIT 技术 从Android 2 2开始 Dalvik虚拟机也支持JIT Dalvik虚拟机有自己的字节码 並非使用Java字节码 Dalvik基于暫存器 而JVM基于堆疊 Dalvik VM透過Zygote進行類別的预加载 Zygote会完成虚拟机的初始化 也是與JVM不同之處 参考资料 编辑Dan Bornstein的讲座资料 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title Dalvik虚拟机 amp oldid 75675129, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。