Dalvik、ART与JVM之间的关系

01

Dalvik简介

1、Google自己设计的用于Android平台的虚拟机

2、支持已转化为dex格式的java应用程序运行;

dex是专为Dalvik设计的一种压缩格式

3、允许在有限的内存中同时运行多个虚拟机实例,并未每一个Dalvik应用作为一和独立的Linux进程运行;

4、5.0以后,Google直接删除Dalvik,取而代之的是ART。


02

Dalvik与JVM区别

1、Dalvik是基于寄存器,JVM基于栈;

2、Dalvik运行dex文件,JVM运行java字节码;

3、自Android2.2以后,Dalvik支持JIT(即时编译技术)。


03

ART(Android Runtime)

1、在Dalvik下,应用每次运行,字节码都需要通过即时编译器转化为机器码,这样会拖慢应用的运行效率;

2、在ART下,应用第一次安装时,字节码就会预先变异成机器码,使其真正成为本地应用。这个过程叫做预编译(AOT),这样,每次启动和执行的时候都会更快。


04

Dalvik与ART区别

最大的不同就是:Dalvik是即时编译,每次运行前都先编译;而ART采用预编译。


05

ART优缺点

优点:

1、系统性能显著提升;

2、应用启动更快,运行更快,体验更流畅;

3、更长的电池续航能力;

4、支持更低的硬件。

缺点:

1、机器码占用存储空间更大;

2、应用安装时间变长。


06

Dex

Dex文件是Dalvik的可执行文件,Dalvik是针对嵌入式设备设计的java虚拟机,所以Dex文件和Class文件的结构上有很大区别。为了更好的利用嵌入式你设备的资源,Dalvik在java程序编译后,还需要用dx工具将编译产生的数个Class文件整合成一个Dex文件。这样其中的各个类就可以共享数据,减少冗余,使文件结构更加紧凑

一个设备在执行Dex文件之前,需要优化该Dex文件并生成对应的Odex文件,然后该Odex文件被Dalvik执行。Odex文件本质是个Dex文件,只是针对目标平台做了相关优化,包括对内部字节码进行一系列处理,主要为字节码验证,替换优化及空方法消除。

原文发布于微信公众号 - Android机动车(JsAndroidClub)

原文发表时间:2017-10-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据和云计算技术

Google资源管理器简析

9.2.2 Borg[1] Borg是一个集群管理器,负责对来自几千个应用程序所提交的Job进行接收、调试、启动、停止、重启和监控,这些Job将用于不同的服务...

3576
来自专栏高性能服务器开发

(八)高性能服务器架构设计总结1——以flamigo服务器代码为例

这篇文章算是对这个系列的一个系统性地总结。我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序。

1632
来自专栏北京马哥教育

Ext3 和 ext4 文件系统在线调整大小内幕

磁盘布局 为了更好的理解在线调整大小工作机制,我们首先需要理解 ext3 和 ext4 文件系统的磁盘布局,对于该功能的实现来说,这两个文件系统在磁盘上的结构是...

3666
来自专栏Android 开发者

Android Jetpack: 分页库 (Paging Library) | 中文教学视频

Android Jetpack 是一系列助力您更容易打造优秀 Android 应用的工具和组件。

1654
来自专栏coding

RabbitMQ实战1.消息代理01.消息代理02.安装RabbitMQ03.生产者-消费者模式04.队列操作

肯定不是,这种直接与生产者交易的成本太大了!大到不可承受。因此有了中间商的存在。中间商将生产者与消费者的所有环节都透明化,使最终的交易流程极其简单。

751
来自专栏WOLFRAM

现在 CDFPlayer 10 已经发布!

1522
来自专栏zhangdd.com

ntp服务器查看状态命令ntpstat及ntpq -p 说明及差别详解

NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)...

2462
来自专栏高性能服务器开发

(八)高性能服务器架构设计总结1——以flamigo服务器代码为例

这篇文章算是对这个系列的一个系统性地总结。我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序。 所谓高性能就是服务器能流畅地处理各个客...

4396
来自专栏FreeBuf

OpenSSH曝高危漏洞,Linux主机面临暴力破解威胁

OpenSSH软件被爆出一个简单却高危的漏洞,攻击者可以在短时间内进行数千次的登录尝试。 ? OpenSSH是最流行的Linux系统进行远程控制的软件。一般来说...

2957
来自专栏程序员笔记

开发一个可维护的程序

1754

扫码关注云+社区

领取腾讯云代金券