java jit aot_AOT和JIT编译器之间的区别android
在Marshmallow,有一个AOT编译器添加了ART.来自Android N的另一个编译器JIT另外添加了AOT.
我的问题是什么是AOT编译器特定的作业/功能以及什么是JIT编译器作业/功能.
解决方法:
在Android Java类中转换为DEX字节码.
DEX字节码格式通过ART或Dalvik运行时转换为本机机器码.
Dalvik is a JIT (Just in time) compilation based engine. There were
drawbacks to use Dalvik hence from Android 4.4 (kitkat) ART was
introduced as a runtime and from Android 5.0 (Lollipop) it has
completely replaced Dalvik. Android 7.0 adds a just-in-time (JIT)
compiler with code profiling to Android runtime (ART) that constantly
improves the performance of Android apps as they run.
(Dalvik使用JIT(及时)编译,而ART使用AOT(Ahead of time)编译.)
及时(JIT):
使用Dalvik JIT编译器,每次运行应用程序时,它都会动态地将Dalvik字节码的一部分转换为机器代码.随着执行的进行,编译和缓存更多的字节码.由于JIT仅编译代码的一部分,因此它具有较小的内存占用并且在设备上使用较少的物理空间.
提前(AOT):
ART配备了Ahead-of-Time编译器.在应用程序的安装阶段,它会将DEX字节码静态转换为机器代码并存储在设备的存储中.这是在设备上安装应用程序时发生的一次性事件.
Android N包含一个混合运行时:
安装过程中不会有任何编译,应用程序可以立即启动,
字节码被解释. ART中有一个新的,更快的解释器,它伴随着一个新的JIT,但JIT信息不会持久存在.
而是在执行期间对代码进行分析,并保存结果数据.
ART的好处:
>在安装过程中完成DEX字节码转换后,应用程序运行得更快.
>直接执行本机代码,减少应用程序的启动时间.
>提高电池性能,因为用于逐行解释字节代码的功率得以保存.
>改进垃圾收集器.
ART的缺点:
>由于在安装过程中将DEX字节码转换为机器代码,因此App安装需要更多时间.
>由于安装时生成的本机代码存储在内部存储中,因此需要更多内部存储.
标签:android,jit,android-6-0-marshmallow,android-7-0-nougat
来源: https://codeday.me/bug/20190611/1218645.html
java jit aot_AOT和JIT编译器之间的区别android相关推荐
- Java中类、抽象类、接口之间的区别和联系。
Java中类.抽象类.接口之间的区别和联系. 程序设计所面对的问题域--客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议).把客观世界中的事物映射到面 ...
- java minor gc 停时,java Minor GC、 Full GC之间的区别
Java Minor GC. Full GC之间的区别 Minor GC Minor GC 指发生在新生代(分为Eden区和Survivor区)的一系列垃圾回收操作,当新生代内存不足,无法给新的新生代 ...
- java se 与j2se_关于java:J2EE和J2SE项目之间的区别
本问题已经有最佳答案,请猛点这里访问. 我已经从github下载了一个开源项目. 这是一个基于Maven的项目. 我如何理解该项目是J2SE项目还是J2EE项目? 这两种项目在结构上有何不同? Jav ...
- java execute、executeQuery和executeUpdate之间的区别
在用纯JSP做一个页面报警功能的时候习惯性的用executeQuery来执行SQL语句,结果执行update时就遇到问题,语句能执行,但返回结果出现问题,另外还忽略了executeUpdate的返回值 ...
- Java系列之JDBC和ODBC之间的区别与联系
JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,它是Java十三个规范之一.可以为多种关系数据库提供统一 ...
- java设计模式---三种工厂模式之间的区别
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...
- Java中List和Map接口之间的区别
列表与地图界面 (List vs Map interface) Here, we will see how List differs from Map interface in Java and we ...
- JAVA中的Exception和Error之间的区别
请对比Exception和Error,另外,运行时异常与异常有什么区别? 典型回答: Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例可以被抛 ...
- java allocatedirect_ByteBuffer.allocateDirect()和MappedByteBuffer.load()之间的区别
我试图通过使用MappedByteBuffer映射特定文件的内存实现两个或多个JVM之间的共享缓存.从规范中我看到,当我们使用MappedByteBuffer.load()时,它应该将数据加载到直接缓 ...
最新文章
- php5.6 和apache2.2的相互配置
- XP快速启动栏里的显示桌面没有了,其他的都还在,应该怎么再添加进去?
- Python中的进制书写
- 重载练习2_判断方法的正确重载
- 专业软件 —— 硬件评测
- 你和数据分析大神之间,就差这7个沟通技巧
- Gamma函数(伽玛函数)的一阶导数、二阶导数公式推导及java程序
- 在mac上安装python版的hanlp/JPype1
- 自己实现一个右滑删除的ListView
- 多线程,异步委托,同步委托几种方式的区别
- Socket开发框架之消息的回调处理
- Node聊天程序实例04:chat_ui.js
- mysql 触发器 lod_MySQL--初探触发器的使用和理解
- 走进 Growth Hacker 的世界
- 双足机器人重心在头部_双足行走机器人及其重心调节装置制造方法及图纸
- 计算机装系统找不到硬盘分区,U盘重装系统找不到硬盘分区怎么办|安装系统找不到硬盘分区...
- 供水供气管道泄漏监测系统原理
- Pytorch是什么?Pytorch能用来干什么?
- 微信小程序 canIUse
- 用Ajax+js+jQuery实现无闪烁定时刷新页面 定时刷新