【技术实现步骤摘要】
应用程序中的类验证方法和装置
[0001]本申请涉及人工智能(artificial intelligence,AI)
,尤其涉及一种应用程序中的类验证方法和装置。
技术介绍
[0002]终端的操作系统系统通常采用计算机编程语言实现,例如可以包括Java等高级语言。以计算机编程语言为Java为例,通常引入Java虚拟机(java virtual machine,JVM),以提升开发效率。在操作系统支持应用程序(application,APP)运行时,Java虚拟机通常需要执行类加载(Verify class)流程,由于Java语言的类(class)文件的产生途径不统一,因此执行类加载时,首先需要执行类验证加载。
[0003]通常的,类加载包括快速路径和慢速路径。快速路径是在编译期加载成功,将验证好的类数据静态存储在磁盘。以安卓系统为例,用户在安装应用时由虚拟机编译器dex2oat直接生成到应用的base.vdex文件。
[0004]慢速路径则是由于各种原因导致在应用程序运行时动态验证类的情况,耗时较长,导 ...
【技术保护点】
【技术特征摘要】
1.一种应用程序中的类验证方法,其特征在于,包括:在检测到所述应用程序的第一场景开始时,获取所述第一场景的预测加载类;在所述第一线程上根据所述预测加载类进行类的验证加载,所述第一线程不同于所述应用程序的主线程;在所述主线程上调用所述第一线程的类的验证加载结果。2.根据权利要求1所述的方法,其特征在于,所述获取所述第一场景的预测加载类,包括:在预加载列表中获取所述第一场景的预测加载类,所述预加载列表为预先学习得到的。3.根据权利要求2所述的方法,其特征在于,所述预加载列表包括事件名和类名的对应关系;所述在检测到所述应用程序的第一场景开始时,获取所述第一场景的预测加载类,包括:在检测到所述应用程序的第一场景开始时,确定所述第一场景在所述应用程序中产生的事件;在所述预加载列表中获取所述事件对应的预验证加载类。4.根据权利要求3所述的方法,其特征在于,所述预加载列表中还包括类名和类加载器名的对应关系;所述在所述第一线程上根据所述预测加载类进行类的验证加载,包括:依据所述类名和类加载器名的对应关系,在所述第一线程上利用所述预测加载类对应的类加载器进行类的验证加载。5.根据权利要求2
‑
4任一项所述的方法,其特征在于,还包括:针对所述应用程序的任一个事件,在所述主线程对所述任一个事件的类验证加载的时间超出时间阈值的情况下,所述主线程利用运行时runtime记录所述任一个事件的事件名和类名;在存在第一类名的记录次数超出次数阈值的情况下,将所述第一类名的事件名和所述第一类名设置在所述预加载列表中。6.根据权利要求5所述的方法,其特征在于,所述时间阈值是基于云端中与所述应用程序的任一个事件的类加载相关的数据学习得到的。7.根据权利要求5或6所述的方法,其特征在于,还包括:所述在存在第一类名的记录次数超出次数阈值的情况下,将所述第一类名的类加载器名设置在所述预加载列表中。8.根据权利要求1
‑
7任一项所述的方法,其特征在于,还包括:利用所述第一线程获取所述预测加载类中各个类的验证加载时间;在所述预测加载类中,选择总验证加载时间不超过所述时间阈值的一个或多个类作为所述第一线程验证加载的类。9.根据权利要求1
‑
8任一项所述的方法,其特征在于,所述主线程还用于加载其他类,所述其他类为所述第一场景中需要加载的且不同于所述预测加载类的类。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在所述主线程完成对所述其他类的验证加载,且所述第一线程未完成对所述预测加载类的验证加载的情况下,利用所述主线程对所述第一线程未完成验证加载的一个或多个类进行验证加载。11.根据权利要求9所述的...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。