Dalvik虚拟机

✍ dations ◷ 2025-06-30 12:36:26 #Android,Java虚拟机

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

大多数虚拟机包括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是一套工具,可以将Java .class转换成.dex格式。一个dex档通常会有多个.class。由于dex有时必须进行优化,会使文件大小增加1-4倍,以ODEX结尾。

相关

  • 气孔气孔是植物用来与外界交换气体和水的部位。一般来说气孔由两个腰果状的保卫细胞组成,它们形成一个可以开闭的孔。一般气孔位于植物叶子的背面,禾本科植物叶子两面都有气孔,只有
  • 白脱牛奶酪浆(英语:Buttermilk),又称酪乳、白脱牛奶,是牛奶制成牛油之后剩余的液体,有酸味。现代出现的制作工艺就在牛奶加入乳酸菌。过去常直接饮用,目前多用作糕点的配料。酪乳的基础是奶
  • 柳百新柳百新(1935年6月10日-),中国材料科学家。生于上海,原籍江苏武进。1961年毕业于清华大学工程物理系。清华大学材料科学与工程系教授。2001年当选为中国科学院院士。
  • 明石海峡大桥明石海峡大桥(日语:明石海峡大橋/あかしかいきょうおおはし Akashi Kaikyō Ōhashi */?)是位于日本的本州与淡路岛之间,连接兵库县神户市与淡路市的跨海大桥,为联系本州与淡路
  • 美鹰航空1984年 (1984)于得克萨斯州沃思堡 1998年美鹰航空(英语:American Eagle)是美国航空用于区域性航班的品牌名。有九家(2019年起将变为七家)不同的区域性航空公司以此名义经营短、
  • 已歇业航空公司列表已结业的斯威士兰航空公司列表:已结业的赤道几内亚航空公司列表已结业的阿尔巴尼亚航空公司列表航空史 · 飞行器(制造商) · 飞行器发动机(制造商) · 旋翼机(制造商) · 机场 ·
  • 日本拉面日本拉面(日语: ?)是日式中华料理所使用的面条与面食种类之一,多以切制而非拉制而成。在日本其他常见名称包括“中華そば”。日本最早关于中国面条的记载是明朝遗臣朱舜水流亡
  • 蔡维泽蔡维泽(1997年1月28日-),男,出生于台湾新竹市。《明日之子 第二季》参赛选手。目前就读于国立台北大学应用外语系,为“傻子与白痴”乐队主唱兼词曲主创。2018年7月参加综艺节目《
  • 亨利·雅克·克雷蒂安亨利·雅克·克雷蒂安(Henri Jacques Chrétien)是一位法国天文学家暨发明家。1879年2月1日,他出生在法国巴黎,其一生最著名的发明包括: - 宽屏幕处理技术,使用一种称作"柱面压缩
  • 苏谦益苏谦益(1913年-2007年10月19日),内蒙古托克托县人,中华人民共和国政治人物。担任内蒙古自治区人民委员会副主席。1954年,当选第一届全国人民代表大会代表。