新闻动态
Dalvik 虚拟机与JAVA虚拟主机的区别
http://sytm.net 发布日期:2014/1/12 20:13:02

Dalvik虚拟机与传统的Java虚拟机有着许多不同点,两者并不兼容,它们显著的不同点主要表现在以下几个方面:

java虚拟机运行是java字节码,Dalvik虚拟机运行的是Dalvik字节码。

传统的java程序经过编译,生成java字节码保存在class文件中,java虚拟机通过解码class文件中的内容来运行程序。而Dalvik虚拟机运行的是Dalvik字节码,所有的Dalvik字节码java字节码转换而来,并被打包到一个DEX可执行文件中。Dalvik虚拟机通过解释DEX文件来执行这些字节码。

Dalvik可执行文件体积更小。

Android SDK中有一个叫dx的工具负责将java字节码转换为Dalvik字节码。Dx工具对java类文件重新排列,消除在类文件中出现的所有冗余信息。避免虚拟机在初始化时出现反复的文件加载与解析过程。一般情况下,java类文件中包含多步不同的方法签名,如果其他的类文件引用该类文件中的方法,方法签名也会被复制到其类文件中,也就是说多个人不同的类会同时包含相同的方法签名,同样地,大量的字符串常量在多个类文件中也被重复使用这些冗余信息会直接增加文件的体积,同时也会严重影响虚拟机解析文件的效率。Dx工具针对这个问题专门做了处理,它将所有的java类文件中的常量池进行分解。

java虚拟机与Dalvik虚拟机的架构不同。

Java虚拟机基于栈架构。程序在运行时虚拟机需要频繁的从栈上读取或写入数据,这过程需要更多的指令分派与内存访问次数,会耗费不少CPU时间,对于手机设备资源有限的设备来说,这是相当大的一笔开销。

更多阅读
返回列表
© 2010 TianMei Technology All rights reserved. ICP:辽B-2-4-20100065辽公网安备 21010202000010号  网站地图