Android JIT
Android JIT(Just-In-Time)编译是一种动态编译技术,在运行时将字节码转换为机器码,以提高应用程序的执行效率。与静态编译不同,JIT编译是在应用程序运行时进行的,因此可以在程序执行期间进行优化。
JIT编译的工作原理
- 启动时解释执行:应用程序启动时,字节码通过解释器逐行执行,确保启动速度快。
- 热路径检测:运行过程中,JIT编译器监视哪些方法或代码片段执行频繁(热路径)。
- 即时编译:对于频繁执行的代码,JIT编译器将其编译为机器码,以提高后续执行速度。
- 优化和缓存:编译后的机器码可能会被缓存,以便下次直接使用,进一步提高性能。
不同Android版本中的JIT表现
- Dalvik VM(Android 2.2 Froyo引入JIT):
- 最早在Android 2.2(Froyo)中引入了JIT编译,显著提高了应用的执行速度。
- Dalvik JIT主要是对热路径进行编译,提升了CPU密集型任务的性能。
- ART(Android Runtime,Android 4.4 KitKat引入,Android 5.0 Lollipop默认使用):
- ART在Android 4.4中首次引入,作为Dalvik的替代品,主要特点是引入了Ahead-of-Time(AOT)编译。
- 在Android 5.0中,ART成为默认的运行时环境。AOT编译在安装应用时将字节码预编译为机器码,减少了运行时的开销。
- JIT在ART中仍然存在,但更多的是辅助AOT编译,例如在运行时进行一些额外的优化。
- Android 7.0 Nougat引入的新JIT编译器:
- Android 7.0(Nougat)中引入了一个新的JIT编译器和配置文件引导的编译(Profile Guided Compilation,PGC)。
- 新JIT编译器可以在设备上运行时动态优化应用,并在下次启动时结合AOT编译进行更好的性能优化。
- 这种混合模式(JIT + AOT)使应用启动速度更快,同时运行时性能也得到了提升。
版本间的差异总结
- Android 2.2 - 4.4:主要是Dalvik VM的JIT,专注于运行时的热路径优化。
- Android 5.0 - 6.0:ART取代了Dalvik,主要依赖AOT编译,但仍保留了一些JIT功能。
- Android 7.0及以后:引入了新的JIT编译器,结合PGC,使用混合模式(JIT + AOT)进一步优化应用性能。
每个版本的JIT实现和优化策略有所不同,但总体目标都是在不影响启动时间的前提下,尽可能提升应用程序的运行时性能。
Android JIT的更多相关文章
- Android JIT实时编译器的设置
在Android JIT实时编译是在Android 2.2之后才引入的,JIT编译器可以显著的提高机器的性能,经过测试,android 2.2的性能较android 2.1提高了 2-5倍.JIT提 ...
- Xamarin vs React Native vs Ionic vs NativeScript: Cross-platform Mobile Frameworks Comparison
CONTENTS Reading time: 14 minutes Cross-platform mobile development has long been a viable alternati ...
- Android里的 ART、JIT、AOT、Dalvik之间有什么关系?
ART.JIT.AOT.Dalvik之间有什么关系? JIT与Dalvik JIT是"Just In Time Compiler"的缩写,就是"即时编译技术", ...
- Android里的Dalvik、ART、JIT、AOT有什么关系?
JIT,Just-in-time,即时编译,边运行边编译: AOT,Ahead Of Time,提前编译,指运行前编译. 区别 这两种编译方式的主要区别在于是否在“运行时”进行编译 优劣JIT优点: ...
- Android N开发 你需要知道的一切
title: Android N开发 你需要知道的一切 tags: Android N,Android7.0,Android --- 转载请注明出处:http://www.cnblogs.com/yi ...
- Xamarin体验:使用C#开发iOS/Android应用
Xamarin是Mono创始人Miguel de Icaza创建的公司,旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发. 简介 Xamarin是基于Mo ...
- (转) Android开发性能优化简介
作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...
- Android系统build.prop文件
# begin build properties (开始设置系统性能) # autogenerated by buildinfo.sh (通过设置形成系统信息) ro.build.id=GRI40 ( ...
- Android Lint Checks
Android Lint Checks Here are the current list of checks that lint performs as of Android Studio 2.3 ...
- 在vs2012中用C#开发Android应用Xamarin环境搭建
Xamarin是Mono创始人Miguel de Icaza创建的公司,旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发. 简介 Xamarin是基于Mono ...
随机推荐
- 为什么我@Value中明明显示了值,他却是null
今天尝试把一些重要东西写入application.yml里,结果在使用的时候发现value取不出来值原因有2个: 1.没有写@compent,没有把这个类交给spring管理 2.在service层n ...
- Apachepoi读写Excel实例
/* * 通过poi创建Excel并写入内容 * */ public static void write() throws IOException { //在内存中创建excel XSSFWorkbo ...
- 2023/4/14 SCRUM个人博客
1.我昨天的任务 初步了解项目的整体框架,并对接下来的人脸识别库以及组件有基本了解和安装 2.遇到了什么困难 ------------ 3.我今天的任务 获得了人脸识别作弊检测和绘制界面的分工,准备先 ...
- Jmeter调试取样器
调试取样器(Debug Sampler),生成一个包含JMeter变量或属性值的样本,并且这些值可以在组件[查看结果树]的响应窗格中看到 组件路径:线程组->右键添加->取样器->D ...
- 为团队配置Linux环境,简单高效的项目共享方案
前言 最近好久没写博客了,事情太多了,我还搞了个新的好玩的项目,等后续做得差不多了来写篇文章介绍一下. 在我们目前的AI项目中,团队需要共同使用一台GPU服务器来做模型训练和数据处理.为了让每个团队成 ...
- 读论文《Distilling the Knowledge in a Neural Network》——蒸馏网络 —— 蒸馏算法 —— 知识蒸馏 中的温度系数到底怎么用, temperature怎么用?
论文地址: https://arxiv.org/pdf/1503.02531.pdf 蒸馏网络的重要公式: 其中,\(p^g\)为Teacher网络,\(q\)为Student网络. 个体神经网络(C ...
- Ubuntu18.04 环境下 解决VScode中空格长度减小的问题
问题: Ubuntu下安装vscode后发现空格特别小,只有正常空格的一半大小 ======================================================= ...
- 低端hdmi视频采集卡的替代方案——向日葵远控
前一阵看直播推货入手了一款hdmi视频采集卡,如下: ======================================================= 使用这个视频采集卡发现两个问题: ...
- [python] Python并行计算库Joblib使用指北
Joblib是用于高效并行计算的Python开源库,其提供了简单易用的内存映射和并行计算的工具,以将任务分发到多个工作进程中.Joblib库特别适合用于需要进行重复计算或大规模数据处理的任务.Jobl ...
- 11-canvas绘制折线图
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...