[发明专利]类加载方法和装置在审
申请号: | 202111322566.2 | 申请日: | 2019-03-25 |
公开(公告)号: | CN114153521A | 公开(公告)日: | 2022-03-08 |
发明(设计)人: | 王新建;张清华;杨勇勇;张斌;刘伟 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F9/455;G06F16/13 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 加载 方法 装置 | ||
本申请公开了类加载方法和装置,涉及计算机技术领域,有助于更快地进行类加载,从而缩短类加载所需的时长。该方法应用于计算机设备,该计算机设备包括目标二进制文件,目标二进制文件包括多个类的类名与该多个类的类信息之间的对应关系,类名与类的类信息一一对应;该方法包括:根据该多个类的类名与该多个类的类信息之间的对应关系,在该多个类的类名中查找所述待加载类的类名,并获取待加载类的类名对应的类信息;其中,该多个类包括第一类,第一类的类信息是指运行第一类所需的类信息,所述待加载类为运行所述计算机设备中的某应用程序时所需的类;根据待加载类的类名对应的类信息,运行该应用程序。
技术领域
本申请涉及计算机技术领域,尤其涉及类加载方法和装置。
背景技术
在java虚拟机(java virtual machine,JVM)框架下,java虚拟机将磁盘中描述类数据的字节码.class文件加载到内存,并对这些数据进行校正、转换解析和初始化,最终形成可以被java虚拟机直接使用的java类型,这就是标准JVM的类加载机制。
从安卓5.0(Android5.0)开始谷歌(Google)开放了Art运行模式。基于Art运行模式,系统服务(system server)进程和每个应用都运行在独立的Art实例上。在系统服务进程或应用运行时,如果需要加载某个类(class)的类信息(class info),则首先根据该类的类名查找到类定义(class definition),然后动态分配内存,加载类数据,通过动态链接填充类的属性、方法等信息。其中,类数据是用于描述类的信息,如类所包含的方法的数量等。类信息包括:类的属性、方法等。
上述技术方案,通常先根据待加载类的类名查找待加载类的类定义,再动态加载待加载类的数据和其他信息。这样,会导致类加载所需要的时间较长。
发明内容
本申请实施例提供了类加载方法和装置,有助于更快地进行类加载,从而缩短类加载所需的时长。
第一方面,本申请实施例提供了一种类加载方法,应用于计算机设备,计算机设备包括目标二进制文件,目标二进制文件包括多个类的类名与该多个类的类信息之间的对应关系,类名与类的类信息一一对应。目标二进制文件例如可以是Dex文件、Oat文件或共享动态库(shared object,SO)文件等。该方法包括:首先,确定运行计算机设备中的应用程序时所需的待加载类的类名;该应用程序例如可以是计算机设备中安装的系统服务进程或任意一个应用。待加载类可以是运行该应用程序所需的任意一个方法所属的类。运行一个应用程序时,例如可以是该应用程序的启动阶段的某一时刻,或者是该应用程序的运行阶段的某一时刻。然后,根据该多个类的类名与该多个类的类信息之间的对应关系,在该多个类的类名中查找待加载类的类名,并获取待加载类的类名对应的类信息;其中,该多个类包括第一类,第一类可以是该多个类中的任意一个类。第一类的类信息是指运行第一类所需的类信息,例如,运行第一类所需的类信息可以包括第一类的类名、类定义、类的属性、方法等。后续,可以根据待加载类的类名对应的类信息,运行该应用程序。
可见,本申请实施例提供的技术方案中加载类的过程实质上是查找类名,从而获取该类名对应的类信息的过程。相比现有技术“先根据类名查找类定义,再动态加载类的数据和其他信息”的技术方案,本申请实施例提供的技术方案中,可以直接根据类名查找到类的类信息,因此,有助于更快地进行类加载,从而缩短类加载所需的时长。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111322566.2/2.html,转载请声明来源钻瓜专利网。