findClassNoInit函数执行流程
2016-11-25 15:11:43 0 举报
findClassNoInit函数是Java虚拟机中用于查找类的字节码文件并加载到内存中的函数。它的执行流程如下:首先,通过传入的类名和符号引用解析出类的全限定名;然后,根据全限定名获取该类的二进制数据流;接着,将二进制数据流转换为方法区的运行时数据结构;最后,返回该类的Class对象。 需要注意的是,如果该类已经被加载过,则直接返回已加载的Class对象;否则,需要先进行类的加载、验证、准备和解析等操作,然后再返回Class对象。这些操作都是由Java虚拟机自动完成的,开发者无需关心。
作者其他创作
大纲/内容
调用dvmAddClassToHash实现将新加载的类添加到hash表中以方便查找
调用loadClassFromDex函数实现加载类达到运行状态
是
调用searchBootPathForClass查找Dex文件
判断能否找到Dex文件
调用dvmReleaseTrackedAlloc释放函数实现过程中分配类中占用的内存
得到入口参数descriptor,loader,pDvmDex
否
调用dvmLookupClass函数判断本类是否已经被加载
调用dexFindClass在指定Dex文件中查找相关类
直接使用
从Dex文件中加载
调用dvmThreadSelf获取当前正在加载类代码的线程
结束
开始
0 条评论
下一页