[发明专利]类加载方法和装置在审
申请号: | 202111322566.2 | 申请日: | 2019-03-25 |
公开(公告)号: | CN114153521A | 公开(公告)日: | 2022-03-08 |
发明(设计)人: | 王新建;张清华;杨勇勇;张斌;刘伟 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F9/455;G06F16/13 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 加载 方法 装置 | ||
1.一种类加载方法,其特征在于,应用于计算机设备,所述计算机设备包括目标二进制文件,所述目标二进制文件包括多个类的类名与所述多个类的类信息之间的对应关系,类信息所述方法包括:
根据所述多个类的类名与所述多个类的类信息之间的对应关系,在所述多个类的类名中查找待加载类的类名,并获取所述待加载类的类名对应的类信息;其中,所述多个类包括第一类,所述第一类的类信息是指运行所述第一类所需的类信息,所述待加载类为运行所述计算机设备中的某应用程序时所需的类;
根据所述待加载类的类名对应的类信息,运行所述应用程序。
2.根据权利要求1所述的方法,其特征在于,所述目标二进制文件还包括:所述多个类的类地址,以及所述多个类的类地址与所述多个类的类名的哈希值之间的对应关系;一个类的类地址所指示的存储空间用于存储一个类的类信息;所述方法还包括:
根据所述多个类的类地址与所述多个类的类名的哈希值之间的对应关系,在所述多个类的类名的哈希值中查找目标哈希值,并获取所述目标哈希值对应的类地址;其中,所述目标哈希值是所述待加载类的类名的哈希值;
所述根据所述多个类的类名与所述多个类的类信息之间的对应关系,在所述多个类的类名中查找所述待加载类的类名,并获取所述待加载类的类名对应的类信息,包括:
在所述目标哈希值对应的类地址所指示的存储空间中,查找所述待加载类的类名,其中,在所述存储空间中,所述待加载类的类名是所述待加载类的类信息的一部分,以及所述目标哈希值对应的类地址所指示的存储空间中的类信息为所述待加载类的类信息。
3.根据权利要求2所述的方法,其特征在于,一个哈希值对应一个桶,一个桶包括零个、一个或多个类地址;所述根据所述多个类的类地址与所述多个类的类名的哈希值之间的对应关系,在所述多个类的类名的哈希值中查找所述目标哈希值,并获取所述目标哈希值对应的类地址,包括:
根据多个桶与所述多个类的类名的哈希值之间的对应关系,在所述多个类的类名的哈希值中查找所述目标哈希值,并获取所述目标哈希值对应的桶,并将所述目标哈希值对应的桶所包括的类地址作为所述目标哈希值对应的类地址。
4.根据权利要求3所述的方法,其特征在于,一个桶具有一个首地址和一个尾地址,所述多个桶包括第一桶,所述第一桶的首地址和尾地址所限定的存储空间用于存储所述第一桶包括的类地址;在所述将所述目标哈希值对应的桶所包括的类地址作为所述目标哈希值对应的类地址之前,所述方法还包括:
从所述多个桶的首地址和尾地址中,查找所述目标哈希值对应的桶的首地址和尾地址;
从所述目标哈希值对应的桶的首地址至尾地址所限定的存储空间中,读取所述目标哈希值对应的桶所包括的类地址。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
将运行所述应用程序所需的全量二进制文件从所述计算机设备的外存中加载到所述计算机设备的内存中;所述全量二进制文件包括所述目标二进制文件。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
创建所述应用程序的至少两个类加载器;
建立所述至少两个类加载器与所述全量二进制文件之间的对应关系;其中,所述至少两个类加载器包括第一类加载器,所述第一类加载器用于在与所述第一类加载器对应的二进制文件中查找所述待加载类的类信息。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
根据双亲委派机制,在所述至少两个类加载器中确定当前执行查找操作的类加载器,以通过所述确定的当前执行查找操作的类加载器,在所述全量二进制文件中查找所述待加载类的类信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111322566.2/1.html,转载请声明来源钻瓜专利网。