深入理解Java虚拟机——JVM、DVM(dalvik)和ART之间的区别

一、Dalvik介绍

Dalvik VM是Android平台的核心组成部分之一,它的名字来源于冰岛一个名为Dalvik的小渔村。Dalvik VM并不是一个Java虚拟机,它没有遵循Java虚拟机规范,不能直接执行Java的Class文件,使用的是寄存器架构而不是JVM中常见的栈架构。但是它与Java又有着千丝万缕的联系,它执行的dex(Dalvik Executable)文件可以通过Class文件转化而来,使用Java语法编写应用程序,可以直接使用大部分的Java API等。

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

二、ART介绍

在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这一机制并不高效,但让应用安装比较快,而且更容易在不同硬件和架构上运行。

ART完全改变了这种做法,在应用安装时就预编译字节码到机器语言,在移除解释代码这一过程后,应用程序执行将更有效率,启动更快。

三、Dalvik与JVM的区别

1、Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于编译后变大的程序来说,在它们执行的时候,花费的时间更短。
2、Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex

四、Dalvik与ART的区别

1、ART与Dalvik最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。

2、ART占用空间比Dalvik大(字节码变为机器码之后,可能会增加10%-20%),这就是“时间换空间大法”。

3、预编译也可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了 CPU 的使用频率,降低了能耗。

    原文作者:java虚拟机
    原文地址: https://blog.csdn.net/SilenceOO/article/details/77875732
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞