Android ART的运行

Android oat ELF
oatdata:存储dex文件
oatexec:存储翻译成本地机器码的指令
Android ART的运行_第1张图片

details
Android ART的运行_第2张图片

加载oat 文件的过程

Android ART的运行_第3张图片

Utils classes for oatloading
Android ART的运行_第4张图片

查找类/方法/native code过程概述
Android ART的运行_第5张图片

Boot images
boot.art文件包含一些特殊的函数,这些函数会在ART虚拟机初始化image空间的时候,将其地址赋给相应的变量中。这些函数在ART解析函数调用的时候会用到。
Image roots中的元素都很重要。DexCache和Classroot 再后面介绍ART如何启动的时候,在详谈。
通俗的理解,boot.art包含了启动类加载后的类对象,启动时以直接被载入进程空间中。可以缩短ART虚拟机启动时间。
boot.art的img header中指明了boot.oat加载的位置oat begin.只要boot.oat加载到了这里,那么两者算相当于合体了,这样两者之间互有引用的东东,便可以轻而易举的建立联系了。

Android ART的运行_第6张图片

Boot process

Android ART的运行_第7张图片

ClassLinker
Android ART的运行_第8张图片

ART memory layout
Android ART的运行_第9张图片

ART memory usage
Android ART的运行_第10张图片

ART object structure
Android ART的运行_第11张图片

ART object allocation
Android ART的运行_第12张图片

ART object allocation impacted by GC

你可能感兴趣的:(Android)