Android运行时ART加载类和方法的过程分析讲解.doc

Android运行时ART加载类和方法的过程分析讲解.doc

Android运行时ART加载类和方法的过程分析讲解

Android运行时ART加载类和方法的过程分析 在前一篇文章中,我们通过分析OAT文件的加载过程,认识了OAT文件的格式,其中包含了原始的DEX文件。既然ART运行时执行的都是翻译DEX字节码后得到的本地机器指令了,为什么还需要在OAT文件中包含DEX文件,并且将它加载到内存去呢?这是因为ART运行时提供了Java虚拟机接口,而要实现Java虚拟机接口不得不依赖于DEX文件。本文就通过分析ART运行时加载类及其方法的过程来理解DEX文件的作用。 在前面这篇文章的最后,我们简单总结了ART运行时查找类方法的本地机器指令的过程,如图1所示: 为了方便描述,我们将DEX文件中描述的类和方法称为DEX类(Dex Class)和DEX方法(Dex Method),而将在OAT文件中描述的类和方法称为OAT类(Oat Class)和OAT方法(Oat Method)。接下来我们还会看到,ART运行时在内部又会使用另外两个不同的术语来描述类和方法,其中将类描述为Class,而将类方法描述为ArtMethod。 在图1中,为了找到一个类方法的本地机器指令,我们需要执行以下的操作: 1. 在DEX文件中找到目标DEX类的编号,并且以这个编号为索引,在OAT文件中找到对应的OAT类。 2. 在DEX文件中找到目标DEX方法的编号,并且以这

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档