dalvik虚拟机是android应用程序运行在dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的dalvik虚拟机实例。可以加快android应用程序的启动速度,感兴趣的朋友可以来极光下载站下载!
dalvik是google公司自己设计用于android平台的虚拟机。dalvik虚拟机是google等厂商合作开发的android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即dalvik executable)格式的java应用程序的运行,.dex格式是专为dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个dalvik 应用作为一个独立的linux 进程执行。
基于堆栈的机器与基于寄存器的机器谁更有优势一直是个争论不休的话题。
一般来说,基于堆栈的机器必须使用指令才能从堆栈上的加载和操作数据,因此,相对基于寄存器的机器,它们需要更多的指令才能实现相同的性能。但是基于寄存器机器上的指令必须经过编码,因此,它们的指令往往更大。这种差异主要是vm机对的操作码调度造成的,它们往往比其他的因素昂贵,比如说及时汇编。
然而,2010年,在oracle公司(java技术的拥有者)嵌入式设备上的标准非图形化性能测试表明,android 2.2(最初的版本包括一个即时编译器)比java se嵌入式设备(两者都基于 java se 6)慢2-3倍。
专有的dex文件格式
dex是dalvik虚拟机专用的文件格式,而问什么弃用已有的字节码文件(class文件)而采用新的格式呢?
1.一个应用中会定义很多类,编译完成后即会有很多相应的class文件,class文件间会有不少冗余的信息;而dex文件格式会把所有的class文件内容整合到一个文件中。这样,除了减少整体的文件尺寸,i/o操作,也提高了类的查找速度。
2.增加了新的操作码的支持
3.文件结构尽量简洁,使用等长的指令,借以提高解析速度
4. 尽量扩大只读结构的大小,借以提高跨进程的数据共享
如何生成dex文件呢?android系统和dalvik虚拟机提供了工具(dx),在把java源代码编译成class文件后,使用dx工具。
android应用开发和dalvik虚拟机
android应用所使用的编程语言是java语言,和java se一样,编译时使用sun jdk将java源程序编程成标准的java字节码文件(.class文件),而后通过工具软件dx把所有的字节码文件转成dex文件(classes.dex)。最后使用android打包工具(aapt)将dex文件,资源文件以及androidmanifest.xml文件(二进制格式)组合成一个应用程序包(apk)。应用程序包可以被发布到手机上运行。
操作系统 /
下载操作系统 /
下载操作系统 /
下载操作系统 /
下载操作系统 /
下载操作系统 /
下载操作系统 /
下载操作系统 /
下载操作系统 /
下载操作系统 /
下载
支持 (0 ) 回复