Dalvik虚拟机

✍ dations ◷ 2025-07-22 22:16:04 #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结尾。

相关

  • 米麹菌米麹菌(学名:Aspergillus oryzae),又名米曲霉菌、米麹霉、麹霉菌或曲霉菌。日文名“麹菌”。米麹菌是一种带有菌丝(hypha)的真菌与霉菌,在中国与日本料理中经常被用来发酵大豆来制
  • 巴达维亚共和国巴达维亚共和国(荷兰语:Bataafse Republiek、法语:République batave)是1795年到1806年期间,在现在的荷兰的领土上建立的一个法兰西第一共和国的傀儡国,其前身是荷兰共和国。1806
  • 凹凸性在几何学中,一个几何图形可分为凸或凹的。例如多边形和多面体。其中,凸的多边形称为凸多边形、凹的多边形则可称为凹多边形或非凸多边形,多面体与多胞体亦然。然而在三维或更高
  • 玩命关头6《速度与激情6》(英语:Fast & Furious 6)是2013年美国犯罪动作片,由林诣彬执导,范·迪塞尔和保罗·沃克尔主演。此部为速度与激情系列的第六部作品,剧情设定依然于第三部(即速度与
  • 治疗乐队治疗乐队(英语:The Cure,1990年代由宝丽金 (台湾)唱片公司译名为“怪人合唱团”),是一支于1976年在西萨塞克斯郡克劳利成立的摇滚乐队。该乐队经历了多次人员调整,只有其核心、吉
  • 霍奎厄姆霍奎厄姆(Hoquiam)(发音: /ˈhoʊkwi.əm/ 美国字典发音: hōk′·wē·əm)位于美国华盛顿州格雷斯港县。此市与西边的阿伯丁以Myrtle街相隔。这两个城市在伐木业和出口业上有共
  • 尤里·阿列克谢耶维奇·加加林国外奖励:尤里·阿列克谢耶维奇·加加林(俄语:Юрий Алексеевич Гагарин,1934年3月9日-1968年3月27日),苏联空军的航天员,苏联红军上校飞行员,是首个进入太空的
  • 12勇士《12勇士》(英语:,或称作:)是一部2018年美国战争片,由尼可莱·弗格席(英语:Nicolai Fuglsig)执导,同时也是弗格席的导演初作,而剧本则由泰德·戴利(英语:Ted Tally)和彼得·克雷格(英语:Pete
  • 三条陆</noinclude>三条陆(三条 陸,Sanjō Riku,1964年10月3日-),日本的漫画原作者、动画脚本家。大分县出身,明治大学毕业。使用过其他笔名为须田留贫、瑳川龙(瑳川竜)等名称。以前曾经在
  • DJ1型电力机车DJ1型电力机车,是中国铁路的电力机车车型之一,也是中国第一种从国外进口并投入批量生产的交流传动电力机车。DJ1型电力机车为双节八轴大功率货运电力机车,由西门子交通集团在“