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 ...
 
随机推荐
- ComfyUI插件:IPAdapter_plus(新版)节点
			
ComfyUI插件:IPAdapter_plus(新版)节点 前言: 学习ComfyUI是一场持久战,而IPAdapter_plus是常用且便捷有效的风格迁移模型,可以通过提供参考图像去进行图像的生成 ...
 - Linux 安装LibreOffice及常见问题解决
			
Linux 安装LibreOffice及常见问题解决 一 .在官网下载对应的压缩包 官网地址:https://www.libreoffice.org/download/download/ 选择Linu ...
 - 云原生 .NET Aspire 8.1 新增对 构建容器、编排 Python的支持
			
.NET Aspire 用于云原生应用开发,提供用于构建.测试和部署分布式应用的框架,这些应用通常利用微服务.容器.无服务器体系结构等云构造.2024年7月23日宣布的新 8.1 版本是该平台自 5 ...
 - python面向对象:多态
			
python面向对象:多态 多态的应用场景 1. 对象所属的类之间没有继承关系 调用同一个函数fly(), 传入不同的参数(对象),可以达成不同的功能 class Duck(object): # 鸭子 ...
 - 【RabbitMQ】03 订阅模式
			
Pub / Sub 订阅模式 特点是 一条消息可以给多个消费者接收了 首先创建订阅模式生产者发生一些代码变动: package cn.dzz.pubSub; import com.rabbitmq.c ...
 - 【SpringBoot】11 Web开发 Part2 模板引擎
			
开发回顾: JavaWeb开发使用JSP技术,所有的页面文件必须是JSP,才能接受数据处理 JSP的好处是,数据交互方便,有JSTL补充 SpringBoot的区别: 我们最终的项目是一个jar包 内 ...
 - 【Shiro】03 ini认证实现
			
[基本概念] 1.身份验证 即在应用中谁能证明他就是他本人. 一般提供如他们的身份ID 一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在 shiro 中,用户需要提供princi ...
 - 英语词汇:simplistic和simple区别
			
"Simplistic" 和 "simple" 都表示简单,但它们有不同的含义和语境: Simplistic: 含义: 过于简单化的,有贬义,表示忽略了复杂性或 ...
 - 读论文《基于 GA - BP 的汽车行李箱盖内板冲压成形工艺优化》 —— 如何使用AI技术优化模具产业中工件冲压工艺
			
最近到了模具公司工作,本来以为身边同事对模具生产和工件生产的流程(大致流程)会比较了解,结果一问才知道基本都是一问三不知,大家都在模具公司工作但是貌似很多人干的和模具生产和工件制造的工作关联性并不强, ...
 - VSCODE远程调试中如何开启X11转发实现APP屏幕转发
			
本文所要做的事情不做过多解释,本文前提是使用本地window10上的VScode远程调试Ubuntu上的代码,在该过程中我们需要查看可视化显示,为此我们使用VSCODE插件来实现X11转发. VSco ...