Android系统Dalvik虚拟机与Java虚拟机的区别

时间:2021-07-16 | 标签: | 作者:Q8 | 来源:网络

小提示:您能找到这篇{Android系统Dalvik虚拟机与Java虚拟机的区别}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的Android系统Dalvik虚拟机与Java虚拟机的区别内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

         Dalvik虚拟机作为Android平台的核心组件,拥有如下几个特点:体积小,占用内存空间小;专有的DEX可执行文件格式,体积更小,执行速度更快;常量池采用32位索引值,寻址类方法名、字段名、常量更快; 基于寄存器架构,并拥有一套完整的指令系统.





         提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能;
  所有的Android程序都运行在Android系统进程里,每个进程对应着一个Dalvik虚拟机实例。
  Dalvik虚拟机与Java虚拟机的区别
  Dalvik虚拟机与传统的Java虚拟机有许多不同点,两者并不兼容,它们显著的不同主要表现在以下几个方面:
  1.Java虚拟机运行的是Java阿迪达斯公关危机字节码,Dalvik虚拟机运行的是Dalvik字节码。
  传统的Java程序经过编译,生成Java字节码保存在class文件中,Java虚拟机通过解码class文件中的内容来运行程序。而Dalvik虚拟机运行的是Dalvik字节码,所有的Dalvik字节码由Java字节码转换而来,并被打包到一个DEX(Dalvik Executable)可执行文件中。Dalvik虚拟机通过解释DEX文件来执行这些字节码。
  2.Dalvik可执行文件体积更小。
  Android SDK中有一个叫dx的工具负责将Java字节码转换为Dalvik字节码。dx工具会对Java类文件重新排列,消除在类文件中出现的所有冗余信息,避免虚拟机在初始化时出现重复的文件加载与解析过程。一般情况下,Java类文件中包含多个不同的方法签名,如果其他的类文件引用该类文件中的方法,方法签名也会被复制到其类文件中,也就是说多个不同的类会同时包含相同的方法签名,同样地,大量的字符串常量在多个类文件中也被重复使用,这些冗余信息会直接增加文件的体积,同时也会严重影响虚拟机解析文件的效率。dx工具针对这个问题专门做了处理,它将所有的Java类文件中的常量池进行分解,消除其中的冗余信息,重新组合形成一个常量池,所有的类文件共享一个常量池。
  3.Java虚拟机与Dalvik虚拟机架构不同。
  Java虚拟机基于栈结构,程序在运行时虚拟机需要频繁的从栈上读取或写入数据,这个过程需要更多的指令分派与内存访问次数,会耗费不少CPU时间,对于像手机设备资源有限的设备来说,这是相当大的公关是表达什麽拼多多笔开销。
  Dalvil虚拟机基于寄存器架构,数据的访问通过寄存器直接传递,这样的访问方式比基于栈方式要快很多。
Android系统Dalvik虚拟机与Java虚拟机的区别

上一篇:Xshell工具连接本地虚拟机Linux系统
下一篇:Java虚拟机之类加载器


版权声明:以上主题为“Android系统Dalvik虚拟机与Java虚拟机的区别"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
扫码咨询
    Android系统Dalvik虚拟机与Java虚拟机的区别
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“Android系统Dalvik虚拟机与Java虚拟机的区别”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通Android系统Dalvik虚拟机与Java虚拟机的区别的相关事宜。

关键词:Android系统Dalvik虚拟机与

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:545321@QQ.com
电话:400-021-1330 | 客服QQ:545321
沪ICP备12034177号 | 沪公网安备31010702002418号