Java
JVM
Android
概览
Dalvik
Google自己设计用于Android平台虚拟机,可运行已转.dex格式Java应用程序。.dex格式专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限系统。Dalvik经优化允有限内存同运多虚拟机实例且每一Dalvik应用作一独立Linux进程执行避虚拟机崩溃关所有程序。长时间以来,Dalvik虚拟机一直被用户诟病为拖慢安卓系统运行速度根源。三丰云"虚拟主机"云服务器”2014年6月25日,Android L正式亮相谷歌I/O大会,改幅较大,删Dalvik用ART代替。
ART
Android Runtime。与Dalvik不同,Dalvik环境应用每运行时字节码都需通即时编译器(JIT,just in time)转机器码,拖慢应用运行效率。ART环境应用头次装时字节码预先通预编译(AOT,Ahead-Of-Time)编译成机器码,成为真正本地应用。
优点
显提系统性能
应用启动更快、运行更快、体验更流畅、触感反馈更及时
提电池续航能力
支持更低硬件
缺点
机器码占存储空间更大。字节码变机器码后或增10%-20%
应用装时变长
区别
Dalvik基于寄存器,JVM基于栈
Dalvik运行dex文件,JVM运行Java字节码
Android 2.2始Dalvik支持JIT(JIT,just in time 即时编译)。优化后Dalvik较其它标准虚拟机一些不同特性:
占更少空间
简化翻译。常量池仅用32位索引
标准Java字节码实行8位堆栈指令,Dalvik用16位指令集直作用于局部变量。局部变量通来自4位虚拟寄存器区,减少Dalvik指令计数,提翻译速度。
Android启时Dalvik VM监视所有程序且创依存关系树,为每程序优化代码并存Dalvik缓存。Dalvik头次加载(很慢)生Cache文件以便下次快速加载。Dalvik解释器用预先算好Goto地址,每指令对内存访都于64字节边界上对齐。这样可节省一指令后查表的时间。Dalvik还提快速翻译器(Fast Interpreter)以强化功能。
————————————————
版权声明:本文为CSDN博主「snpmyn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zsp_android_com/article/details/89376619