一篇文章让你清楚DVM、JVM、ART、JIT、ODEX、VDEX、DEX、oat

本文详细对比了DVM和JVM的区别,探讨了DVM和ART的编译模式,如JIT和AOT,分析了AOT的编译时机。同时,介绍了从dex到odex、vdex、oat的转换过程,以及Android系统中静态链接库和动态链接库的概念和工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DVM 和 JVM的区别

 

   1、DVM基于寄存器,JVM基于栈。  DVM效率要更高

 

      解释为什么寄存器效率更高?

      a、 因为寄存器是CPU中的一部分, 堆栈是内存的一种结构。 内存是CPU和硬盘之间的通道。 寄存器是CPU的储存器,速度快。

      b、  一个是直接对CPU进行操作,一个是对内存操作,然后在转化成CPU指令操作。所以寄存器效率更快。

 

2、DVM 运行dex  JVM运行java字节码

 


 

DVM 和 ART的区别

 

1、 Dalvik虚拟机 的编译模式是 JIT是,一种运行时编译, 每次在打开应用的时候都要重新去编译。

2、 ART   虚拟机  的编译模式是AOT,它是预编译,在应用安装的时候会启动 dex2oat过程,直接把dex编译为ELF文件,以后在执行APP的时候不用编译了,效率更高

 

      AOT 和 JIT 是对应的编译模式而已。

      优缺点:

      1、Dalvik 安装快,体积小,但是每次运行APP都要编译, 每次编译特别耗电

      2、ART安装慢,体积大,多余10%-20%,     但是每次运行APP直接读取本地机器码,效率快,不用每次编译 比较省电

 

     AOT编译时机

  1. 随Android ROM构建时一起编译

  2. 程序安装时进行编译(针对第三方应用)

 

发展史:

 Android 2.2  使用DVM虚拟机

 Android 4.4   推出ART虚拟机

 Android 5.0   全面替换ART

 Android7.0   仍是ART环境,但是编译策咯改为AOT 和 JIT 混合编译。 </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值