关闭

Android开发——JVM、Dalvik以及ART的区别

20341人阅读 评论(0) 收藏 举报
分类:

0. 前言

转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52354964

DalvikGoogle公司自己设计用于Android平台的虚拟机。Dalvik经过优化,使其更适合Android平台。具体优点会在下面和JVM进行比较时说明。

20146月谷歌I/O大会,Android L 改动幅度较大,Google将直接删除Dalvik,代替它的是传闻已久的ART

ART又和Dalvik有什么联系和区别呢?


0.1 先对Dalvik以及ART做简单介绍:

什么是Dalvik

DalvikGoogle公司自己设计用于Android平台的Java虚拟机。dex格式是专为Dalvik应用设计的一种压缩格式,适合于内存和处理器速度有限的系统Dalvik允许同时运行多个虚拟机的实例,并且每一个应用作为独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭

 

什么是ART

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

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


1. DalvikJVM的区别

1Dalvik指令集是基于寄存器的架构,dex字节码更适合于内存和处理器速度有限的系统。

(2)而JVM基于栈的。相对而言,基于寄存器的Dalvik实现虽然牺牲了一些平台无关性,但是它在代码的执行效率上要更胜一筹。

 

2. DalvikART的区别

1)在Dalvik下,应用每次运行都需要通过即时编译器JIT)将字节码转换为机器码,即每次都要编译加运行,这虽然会使安装过程比较快,但是会拖慢应用以后每次启动的效率。而在ART 环境中,应用在第一次安装的时候,字节码就会预编译(AOT)成机器码这样的话,虽然设备和应用的首次启动(安装慢了)会变慢,但是以后每次启动执行的时候,都可以直接运行,因此运行效率会提高。

2ART占用空间比Dalvik大字节码变为机器码之后,可能会增加10%-20%),这也是著名的“空间换时间大法"

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


12
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android Dalvik虚拟机初识

Java的未来由google引导
  • andyxm
  • andyxm
  • 2011-01-10 14:38
  • 51625

Dalvik虚拟机简要介绍和学习计划

我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。除了指令集和类文件格式不同,Dalvik虚拟机与Java虚拟机共享有差不多的...
  • Luoshengyang
  • Luoshengyang
  • 2013-05-06 00:57
  • 72958

Dalvik概述

Dalvik概述 Dalvik是Google公司自己设计用于Android平台的Java虚拟机。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行...
  • guojin08
  • guojin08
  • 2013-07-19 16:39
  • 1040

安卓Dalvik虚拟机学习(1)----Dalvik虚拟机运行原理

安卓Dalvik虚拟机相关知识点总结Java虚拟机与Dalvik虚拟机的区别 Java虚拟机运行的是Java字节码(保存在class文件中),Dalvik运行的是Dalvik字节码(由Java字节码转...
  • u013736724
  • u013736724
  • 2016-11-05 21:45
  • 499

深入理解Android之Java虚拟机Dalvik

一、背景这个选题很大,但并不是一开始就有这么高大上的追求。最初之时,只是源于对Xposed的好奇。Xposed几乎是定制ROM的神器软件技术架构或者说方法了。它到底是怎么实现呢?我本意就是想搞明白Xp...
  • Innost
  • Innost
  • 2015-12-22 09:55
  • 32481

Android运行时ART简要介绍和学习计划

Android在4.4就已推出新运行时ART,准备替代用了有些时日的Dalvik。不过当时尚属测试版,主角仍是Dalvik。 直到今年的Google I/O大会,ART才正式取代Dalvik。这个消息...
  • Luoshengyang
  • Luoshengyang
  • 2014-09-15 00:58
  • 51401

Android ART机制分析

Dalvik运行环境使用JIT(Just-In-Time)来进行转译,应用每次运行的时候,字节码都需要通过JIT转换为机器码,这会拖慢应用的运行效率。而ART则是使用AOT进行处理(Ahead-Of-...
  • jiazhijun
  • jiazhijun
  • 2014-01-05 12:47
  • 13944

Android ART分析

标 题: 【原创】Android ART分析 作 者: MindMac 时 间: 2014-01-11,14:19:16 链 接: http://bbs.pediy.com/showthread.p...
  • u011354613
  • u011354613
  • 2016-01-21 16:27
  • 1393

Android运行时ART执行类方法的过程分析

在前面一篇文章中,我们分析了ART运行时加载类以及查找其方法的过程。一旦找到了目标类方法,我们就可以获得它的DEX字节码或者本地机器指令,这样就可以对它进行执行了。在ART运行时中,类方法的执行方式有...
  • Luoshengyang
  • Luoshengyang
  • 2014-11-10 01:00
  • 50554

Android art模式解析

Android art模式解析 本文主要针对android系统art模式下面从安装apk到运行apk的一个过程,主要有一下几个方面: Art虚拟机介绍 安装时dex文件转化为oat文件 oat文...
  • xwl198937
  • xwl198937
  • 2015-12-14 19:12
  • 2740
    个人资料
    • 访问:1315878次
    • 积分:12381
    • 等级:
    • 排名:第1348名
    • 原创:139篇
    • 转载:28篇
    • 译文:2篇
    • 评论:527条
    个人说明