ART和DVM

2024-05-28 13:08
文章标签 art dvm

本文主要是介绍ART和DVM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

##### 1、简介
- Dalvik(DVM)是一个基于JIT(Just in time)编译的引擎。使用DVM存在一些缺点,所以从Android 4.4(Kitkat)开始引入了ART作为运行时,从Android 5.0(Lollipop)开始ART就全面取代了DVM。Android 7.0 向ART中添加了一个just-in-time(JIT)编译器,这样就可以在应用运行时持续的提高其性能。
- 注意:Dalvik(DVM)使用JIT(Just in time)编译,而ART使用AOT(Ahead of time)编译。

##### (1)Just In Time (JIT)
- 使用DVM JIT编译器,每次应用在运行时,它实时的将一部分DVM字节码翻译成机器码。在程序的执行过程中,更多的代码被被编译并缓存。由于JIT只翻译一部分代码,它消耗的更少的内存,占用的更少的物理存储空间。

##### (2)Ahead Of Time(AOT)
- ART内置了一个Ahead-of-Time编译器。在应用的安装期间,他就将DEX字节码翻译成机器码并存储在设备的存储器上。这个过程只在将应用安装到设备上时发生。由于不再需要JIT编译,代码的执行速度要快得多。

#### 2、Java代码如何执行
- 为了使代码和平台无关,JAVA开发了JVM,即Java虚拟机。它为每一个平台开发一个JVM,也就意味着JVM是和平台相关的。Java编译器将.java文件转换成.class文件,也就是字节码。最终将字节码提供给JVM,由JVM将它转换成机器码。

#### 3、Android代码如何执行
- 在Android中,Java类被转换成DEX字节码。DEX字节码通过ART或者DVM转换成机器码。这里DEX字节码和设备架构无关。
- DVM是一个基于JIT(Just in time)编译的引擎。使用DVM存在一些缺点,所以从Android 4.4(Kitkat)开始引入了ART作为运行时,从Android 5.0(Lollipop)DVM。Android 7.0 向ART 中添加了一个 just-in-time(JIT)编译器,这样就可以在应用运行时持续的提高其性能。

#### 4、ART的优点和缺点
##### (1)优点
- 应用运行更快,因为DEX字节码的翻译在应用安装是就已经完成。
- 减少应用的启动时间,因为直接执行的是native代码。
- 提高设备的续航能力,因为节约了用于一行一行解释字节码所需要的电池。
- 改善的垃圾回收器
- 改善的开发者工具

##### (2)缺点
- 应用安装需要更长的时间,因为DEX字节码需要在安装时就翻译成机器码。
- 由于在安装时时生成的native机器码是存储在内部存储器上,所以需要更多的内部存储空间。

这篇关于ART和DVM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010655

相关文章

发现个有趣的东西:Tweetable Mathematical Art(用三个140字符以内的函数生成一个1024尺寸的图片)

发现 我是在看《构建之法》这本书时,看到作者提到这个: 好厉害!用三段140字符以内的代码生成一张1024×1024的图片_IT新闻_博客园 这是2014年一个人在 Code Golf Stack Exchange (a question and answer site for programming puzzle enthusiasts and code golfers) 发起的编程挑战:

【HDU】5023 A Corrupt Mayor's Performance Art 线段树

传送门:【HDU】5023 A Corrupt Mayor's Performance Art 题目分析:水水的线段树,首先颜色只有30种,所以状压就好了,然后每次查询就把区间内所有的颜色“或”出来,用位运算判断一下有哪些颜色就好了。。 代码如下: #include <cstdio>#include <cstring>#include <algorithm>#in

Android ART 的初始化和启动

新书上市《深入解析Android 5.0系统》  以下内容节选自本书 ART的初始化  下面我们从JNI_GetDefaultJavaVMInitArgs(),JNI_CreateJavaVM()和JNI_GetCreatedJavaVMs()三个函数入手来了解ART的初始化过程。这三个函数的代码位于jni_internal.cc中。  JNI_GetDefaultJavaVMInitArg

《嵌入式系统 – 玩转ART-Pi开发板(基于RT-Thread系统)》第7章 环境监测系统(二)

原文地址 《嵌入操作系统 – 玩转ART-Pi开发板》第7章 环境监测系统(一) 7.3联网【WiFi】 ART-Pi有两种联网方式,一个是板载的WiFi模块AP6212,这个模块自带蓝牙;另一个是工业扩展板的网口,使用的芯片是LAN8720A,我没有扩展板,这里就只讲解如何使用WiFi联网。这里先看看WiFi的电路。 图11 AP6212芯片 图12 WiFi和BT接口

《嵌入式系统 – 玩转ART-Pi开发板(基于RT-Thread系统)》第7章 环境监测系统(一)

原文地址 开发环境: RT-Thread版本:4.0.3 操作系统:Windows10 Keil版本:V5.30 RT-Thread Studio版本:2.0.1 开发板MCU:STM32H750XB 从本章开始,笔者不在就某一个单一功能讲解,而是针对某一个具体的项目作为讲解的主要内容。 7.1前言 第一个项目是一个环境监测系统,我相信很多朋友都做过,我这里主要从宏观层面来把握,你学会这个

《嵌入式系统 – 玩转ART-Pi开发板(基于RT-Thread系统)》第9章 基于Select/Poll实现并发服务器(一)

开发环境: RT-Thread版本:4.0.3 操作系统:Windows10 RT-Thread Studio版本:2.1.1 开发板MCU:STM32H750XB LWIP:2.0.2 并发服务器支持多个客户端的同时连接,最大可接入的客户端数取决于内核控制块的个数。当使用Socket API时,要使服务器能够同时支持多个客户端的连接,必须引入多任务机制,为每个连接创建一个单独的任务来处理连接上

《嵌入式系统 – 玩转ART-Pi开发板(基于RT-Thread系统)》第8章 APT-Pi双网络实现自动切换

ART-Pi中有多种联网方式,最常用有两种:一个是自带的Wifi模块AP6212,另外一个是以太网,ART-Pi使用的PHY芯片是LAN8720A。 笔者在前面的文章已经讲解了Wifi的使用。 Wifi的移植使用 关于以太网的讲解请看笔者以前文章: 详解以太网(一) 详解以太网(二) 接下来将讲解以太网的使用。 8.1以太网硬件介绍 在讲解移植步骤之前,有必须先介绍我们的实

reproducible-image-denoising-state-of-the-art

https://github.com/wenbihan/reproducible-image-denoising-state-of-the-art

【AMBA Bus ACE 总线11 -- ACE DVM(Distributed Virtual Memory)使用介绍】

文章目录 ACE DVM 使用背景DVM Transactions 类型和作用DVM 消息使用场景DVM 示例Sumamry ACE DVM 使用背景 当 Cache maintenance 指令操作完以后,落实到总线上的时候,它会有一组 cache maintenance transaction 出来,这组 cache maintenance transaction 主要是

POLYGON Horror Carnival - Low Poly 3D Art by Synty

465 个独特的预设模型 一个正在运行的摩天轮和旋转木马 包括10个示例脚本,让嘉年华栩栩如生 ◼ 描述◼ 欢迎来到恐怖嘉年华。这个地方曾经有诱人的音乐,现在却有着令人不安的旋律,暗示着其中令人不安的惊喜。 这场险恶的盛会的真正核心在于演示场景。它使用3D低多边形资源构建,具有来自不祥的狂欢帐篷、摊位、摩天轮、旋转木马等游戏开发资源。它是疯狂人物与毫无戒心的寻求刺激者玩捉迷藏游戏的完美狩猎场。