美文网首页Android进化
Android虚拟机学习整理

Android虚拟机学习整理

作者: 锄禾豆 | 来源:发表于2019-04-23 21:36 被阅读0次

    基本知识

    JVM

    JAVA虚拟机  .java文件 -> .class文件 -> .jar文件

    DVM

    4.4以前的Android虚拟机  Dalvik Virtual Machine  .java文件 –>.class文件-> .dex文件

    ART

    5.0以后的Android虚拟机  Android Runtime  Android运行时ART,它的核心是OAT文件

    区别:

    DVM,应用每次运行时,字节码都需要通过即时编译器(JIT,just in time)转换为机器码,这会使得应用的运行效率降低。

    ART,系统在安装应用时会进行一次预编译(AOT,ahead of time),将字节码预先编译成机器码并存储在本地,这样应用每次运行时就不需要执行编译了,运行效率也大大提升。

    这里涉及到ART的安装速度会变慢

    ART安装速度的流程 关键字dex2oat

    Android虚拟机学习整理

    在应用安装时,installd通过dex2oat优化APK安装包classes.dex的Dalvik字节码为本地机器代码

    参考学习

    https://blog.csdn.net/weixin_42336002/article/details/80610555

    https://www.cnblogs.com/qitian1/p/6461541.html

    https://chriszeng87.iteye.com/blog/2113621

    补充知识点

    dex

    Dalvik VM executes的全称,可以认为是安卓虚拟机的可执行程序。

    dexopt

    dexopt 是 android dalvik 虚拟机使用的优化程序,它负责把dex文件优化成odex。

    dexopt在dalvik虚拟机上的目的是,将dex文件优化成odex文件,可以让虚拟机更加优化的执行。

    dexopt在ART虚拟机上的目的是,将dex文件优化成二进制格式的文件,从可以让ART虚拟机执行。dexopt会调用dex2oat进行

    odex

    odex是OptimizedDEX的缩写,表示对dex的优化

    odex vdex art

    https://blog.csdn.net/u010164190/article/details/84989488

    dex2oat

    dex2oat的任务是将原来的dex文件做预先的翻译,从而可以加快APP运行的时间。但是由于某些APP比较复杂,所以优化的时间就比较长

    dex2oat 顾名思义 dex file to oat file,就是在新旧两种运行时文件的转换。

    oat

    OAT文件是一种Android私有ELF文件格式,它不仅包含有从DEX文件翻译而来的本地机器指令,还包含有原来的DEX文件内容

    参考学习:

    https://blog.csdn.net/alvinhuai/article/details/81738400

    https://blog.csdn.net/ShenFengMeng/article/details/50598680

    https://www.jianshu.com/p/cfeb8dec53c3

    https://blog.csdn.net/long375577908/article/details/78190422

    http://blog.jobbole.com/77761/

    相关文章

      网友评论

        本文标题:Android虚拟机学习整理

        本文链接:https://www.haomeiwen.com/subject/moxigqtx.html