天天看点

android开发之Dalvik VM与Java VM 以及 Dalvik模式和ART模式

Dalvik VM存在于Android系统,Java VM是Java虚拟机,两者都是虚拟机,它们之间有什么区别呢?

Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。(dx 是一套工具,可以将 Java .class 转换成 .dex 格式. 一个dex档通常会有多个.class。由于dex有时必须进行最佳化,会使档案大小增加1-4倍,以ODEX结尾。)

1.DVM基于寄存器,而JVM基于栈.基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短.

2.不同于JVM执行.class格式的字节码,DVM执行.dex格式的字节码,dex文件格式可以减少整体文件尺寸,提高I/O操作的类查找速度,DVM有自己的bytecode并非使用Java bytecode.

(odex是为了在运行过程中进一步提高性能,对dex文件的进一步优化。)

那么,DVM和JVM的区别大致的说明了一下,我相信大家心里都有底了,因此接下来就和大家一起来探讨Dalvik模式和ART模式!

android开发之Dalvik VM与Java VM 以及 Dalvik模式和ART模式

2014年6月25日,Android L 将正式亮相于召开的谷歌I/O大会,Android L 改动幅度较大,谷歌将直接删除Dalvik,代替它的是传闻已久的ART。

最新的安卓4.4系统中引入了全新的ART模式吗,相比之前流行已久的Dalvik模式有了很大的改变。最近看到不少安卓手机朋友在问ART与Dalvik哪个好这样的问题,因此笔者今天为大家制作了以下这张ART模式和Dalvik模式区别对比图表,通过对比,可以一眼看出 ART模式和Dalvik模式之间的区别。

android开发之Dalvik VM与Java VM 以及 Dalvik模式和ART模式

总结:

1.为了Android系统的兼容性,使用Dalvik模式在每次运行应用时都需要一次编译,这样一来程序的执行效率就大大下降.

2.ART(Android Run Time)模式与Dalvik模式最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会讲代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也就大大的提升,但是在兼容性方面和预编译后的容量方面ART还需要多多思考思考,优化优化!!!!