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

来源:互联网 发布:miru隐形眼镜知乎 编辑:程序博客网 时间:2024/06/08 22:21

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
通过对比上面我们可以得出如下几点区别:
1Java虚拟机运行java字节码,Dalvik虚拟机运行其专有的文件格式.dex
2Dalvik基于寄存器,而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 0
原创粉丝点击