Dalvik虚拟机

✍ dations ◷ 2025-05-19 15:57:22 #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结尾。

相关

  • 虾饺虾饺,以一层澄面皮包着一至两只虾为主馅,分量大小多以一口为限。传统的虾饺是半月形、蜘蛛肚的,共有十三褶。馅料有虾,有肉,有笋,现在流行的是独虾虾饺。优质美味的虾饺一定要皮薄
  • 龙门龙门县是广东省惠州市的辖县,位于广东省中部,增江上游,地处珠江三角洲的边缘。地理坐标位于东经113°48'26″至114°24'58″,北纬23°20'6″至23°57'50″之间,东南与河源市东源
  • Schedule I《受管制药物和物品法》(英语:Controlled Drugs and Substances Act,法语:Loi réglementant certaines drogues et autres substances)是加拿大的联邦药物管制法令,于1996年在首
  • 圣战者圣战者(即阿拉伯语:مجاهد‎,拉丁化:muǧāhid,英语:Mujahid,意为奋战者)指的是参与圣战的斗士。复数形为Mujahideen(阿拉伯语:مجاهدين‎,拉丁化:muǧāhidīn)。这个字是来自
  • 奥布赖恩小劳伦斯·弗朗西斯·“拉里”·奥布赖恩(英语:Lawrence Francis "Larry" O'Brien, Jr.,1917年7月7日-1990年9月28日),美国政治家、竞选战略专家,美国民主党人,曾任美国邮政部长(1965
  • 巛部巛部,为汉字索引里为部首之一,康熙字典214个部首中的第四十七个(三划的则为第十八个)。就繁体和简体中文中,巛部归于三划部首。巛部通常是从上、下方及中间均可为部字,且无其他部
  • 阿斯特拉汉卡 (北哈萨克斯坦州)阿斯特拉汉卡(哈萨克语:Астраханка,俄语:Астраханка)是哈萨克斯坦北哈萨克斯坦州阿克凯任区(哈萨克语:Аққайың ауданы,俄语:Аккайынски
  • 别所浩郎别所浩郎(1953年2月5日-)是一名日本知名外交官,曾任日本常驻联合国代表。出生于兵库县,由于父亲工作关系小、中学时代曾在新西兰度过。滩高等学校毕业后进入东京大学法学部,1975年
  • 赖绍尧赖绍尧(1871年-1917年),字悔之,清代台湾府彰化县燕雾下保(今彰化县大村乡贡旗村)人。祖籍为福建漳州。邑庠生。日治时期著名诗人。因其妻为雾峰林家三小姐林选,故与雾峰林家有姻
  • 林保淳林保淳,国立台湾大学中国文学研究所博士,淡江大学中国文学系教授。林保淳是在台湾的大学中率先开辟武侠小说相关课程的教授之一,并于淡江大学创立武侠小说研究室。是作家吴浊流