Android学习(3) -- Android虚拟机

Dalvik VM 和 JVM 的比较

Dalvik 虚拟机是 Google 公司自主设计的运行于 Android 平台的 Java 虚拟机。 JVM 是归 Oracle 公司所有的,运行在基于 PC 机上的 Window  Linux 操作系上的 java 虚拟机。 Google 工程师之所以设计 Dalvik 虚拟机主要有以下两点原因:若要使用 JVM 需要获得授权许可,这意味着需要缴纳大量的费用; JVM 主要是针对于 CPU 快,内存大的传统 PC 机,不适合移动设备。

jvm       编译后文件格式    .java->.class->.jar 
dalvikvm  编译后文件格式    .java->.class->.dex->.apk
通过对比上面我们可以得出如下几点区别:
1 Java 虚拟机运行java 字节码,Dalvik 虚拟机运行其专有的文件格式.dex
2 Dalvik 基于寄存器,而JVM 基于栈。基于寄存器的虚拟机对于编译之后变大的程序来说,在它们执行时候,花费的时间更短。


Android的新虚拟机ART(4.4 测试版本  5.0正式版)

随着Android操作系统的成熟,Google的Android团队开始将注意力转向一些底层组件,其中之一是负责应用程序运行的Dalvik运行时。Google开发者已经花了两年时间开发更快执行效率更高更省电的替代ART运行时。 ART代表Android Runtime,其处理应用程序执行的方式完全不同于Dalvik,Dalvik是依靠一个Just-In-Time (JIT)编译器去解释字节码。开发者编译后的应用代码需要通过一个解释器在用户的设备上运行,这一机制并不高效,但让应用能更容易在不同硬件和架构上运行。ART则完全改变了这套做法,在应用安装时就预编译字节码到机器语言,这一机制叫Ahead-Of-Time (AOT)编译。在移除解释代码这一过程后,应用程序执行将更有效率,启动更快。

ART优点:

1) 系统性能的显著提升。

2) 应用启动更快、运行更快、体验更流畅、触感反馈更及时。

3) 更长的电池续航能力。

4) 支持更低的硬件。

ART缺点:

1) 更大的存储空间占用,可能会增加10%-20%。

2) 更长的应用安装时间。


Dalvik VM 和 ART 的比较

Dalvik:应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率。
   java-->java bytecode(.jar)-->dalvik bytecode(.dex)-->optimized dalvik bytecode(.odex)

 这里的.odex如同其名,本质依然是dalvik字节码。



ART:应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用,应用的启动和执行速度都会显著提升。
java-->java bytecode(.jar)-->dalvik bytecode(.dex)-->optimized android runtime machine code(.odex)

ART的编译器(LLVM)会把dalvik字节码编译成oat格式的机器码,并封装为elf文件。

使用.odex扩展名应是为了保持libart与libdvm互相替换时的一致性,对应两者的可执行代码使用同一个文件名。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值