一种应用启动方法、装置、计算机设备及存储介质与流程

文档序号:35118166发布日期:2023-08-14 11:39阅读:28来源:国知局
一种应用启动方法、装置、计算机设备及存储介质与流程

本申请涉及计算机,具体涉及一种应用启动方法、装置、计算机设备及存储介质。


背景技术:

1、当app(application,中间件或应用)启动时,系统会分配一个对应的进程给这个app,该进程有独立的虚拟内存,这一块虚拟内存通常是按页划分,例如ios系统每页的大小是16k,每次加载都是以页为单位进行。

2、但是在实际过程中,很多在启动app时需要执行的代码对应的虚拟内存并没有加载到实际的物理内存空间,导致操作系统会缺页异常,造成缺页中断,cpu处理器会将当前进程卡住,直至操作系统将app启动需要执行的代码对应的虚拟内存数据全部加载至物理内存后,app才能真正启动。由于缺页一般为毫秒级别,当同时存在大量缺页时,用户感知就会较为明显,当app应用较为复杂或代码量较大,启动时可能会存在大量的缺页异常,明显影响到app的启动时长,导致应用启动耗时较长,影响用户体验。

3、前面的叙述在于提供一般的背景信息,并不一定构成现有技术。


技术实现思路

1、针对上述技术问题,本申请提供一种应用启动方法、装置、计算机设备及存储介质,能够解决现有技术中应用启动时可能存在大量的缺页异常导致应用启动耗时较长的问题,有效减少缺页中断的次数,优化应用启动速度,从而提高用户体验感。

2、为解决上述技术问题,本申请提供了一种应用启动方法,包括如下步骤:

3、配置编译器,并开启所述编译器内置的代码覆盖率检测功能;

4、通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数;

5、在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件;

6、将所述有序文件配置至所述编译器中,打包生成可执行文件;

7、根据所述可执行文件启动目标应用。

8、可选地,在所述配置编译器之前,所述方法还包括:

9、获取目标应用对应的工程代码,并通过编译器根据所述工程代码启动所述目标应用。

10、可选地,所述开启所述编译器内置的代码覆盖率检测功能,包括:

11、通过所述编译器内置的代码覆盖插件,开启所述编译器的代码覆盖率检测功能,以插入对用户定义的函数的调用。

12、可选地,所述通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数,包括:

13、通过所述编译器在每个用户定义的函数中均插入第一预设代码,作为所述用户定义的函数对应的钩子;

14、基于所述钩子生成对应的钩子函数;

15、通过所述钩子函数监听目标应用启动时调用的所有的用户定义的函数。

16、可选地,所述在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件,包括:

17、在所述钩子函数中通过系统函数获取当前调用的用户定义的函数对应的符号;

18、通过开启的原子队列对所述符号进行排列后写入至有序文件。

19、可选地,所述通过开启的原子队列对所述符号进行排列后写入至有序文件,包括:

20、开启原子队列,将获取的当前调用的用户定义的函数对应的符号存入至原子队列中;

21、遍历所述原子队列,得到所有的符号后进行去重;

22、按照调用顺序,对去重后的符号进行排序后写入至对应的有序文件。

23、可选地,所述将所述有序文件配置至所述编译器中,打包生成可执行文件,包括:

24、将所述有序文件配置至所述编译器中进行二进制重排,打包生成对应的可执行文件,所述可执行文件用于按照目标应用启动时的执行顺序对用户定义的函数进行排列。

25、相应地,本申请还提供了一种应用启动装置,包括:

26、配置模块,用于配置编译器,并开启所述编译器内置的代码覆盖率检测功能;

27、监听模块,用于通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数;

28、排列模块,用于在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件;

29、打包模块,用于将所述有序文件配置至所述编译器中,打包生成可执行文件;

30、启动模块,用于根据所述可执行文件启动目标应用。

31、本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的应用启动方法的步骤。

32、本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的应用启动方法的步骤。

33、实施本发明实施例,具有如下有益效果:

34、如上所述,本申请提供的一种应用启动方法、装置、计算机设备及存储介质,其中方法包括:配置编译器,并开启编译器内置的代码覆盖率检测功能;通过编译器添加钩子函数,并通过钩子函数监听目标应用启动时调用的用户定义的函数;在钩子函数中获取用户定义的函数的符号后,通过原子队列对用户定义的函数的符号进行排列后写入至有序文件;将有序文件配置至编译器中,打包生成可执行文件;根据可执行文件启动目标应用。本申请通过获取应用启动时调用的函数,按照其执行顺序对函数符号进行排序后生成有序文件,通过编译器对有序文件进行编译打包后生成可执行文件,最终根据可执行文件启动目标应用,从而能够解决现有技术中应用启动时可能存在大量的缺页异常导致应用启动耗时较长的问题,有效减少缺页中断的次数,优化应用启动速度,进而提高用户体验感。



技术特征:

1.一种应用启动方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的应用启动方法,其特征在于,在所述配置编译器之前,所述方法还包括:

3.根据权利要求1所述的应用启动方法,其特征在于,所述开启所述编译器内置的代码覆盖率检测功能,包括:

4.根据权利要求1所述的应用启动方法,其特征在于,所述通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数,包括:

5.根据权利要求1所述的应用启动方法,其特征在于,所述在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件,包括:

6.根据权利要求5所述的应用启动方法,其特征在于,所述通过开启的原子队列对所述符号进行排列后写入至有序文件,包括:

7.根据权利要求1所述的应用启动方法,其特征在于,所述将所述有序文件配置至所述编译器中,打包生成可执行文件,包括:

8.一种应用启动装置,其特征在于,包括:

9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的应用启动方法的步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的应用启动方法的步骤。


技术总结
本申请提出了一种应用启动方法、装置、计算机设备及存储介质,其中方法包括:配置编译器,并开启编译器内置的代码覆盖率检测功能;通过编译器添加钩子函数,并通过钩子函数监听目标应用启动时调用的用户定义的函数;在钩子函数中获取用户定义的函数的符号后,通过原子队列对用户定义的函数的符号进行排列后写入至有序文件;将有序文件配置至编译器中,打包生成可执行文件;根据可执行文件启动目标应用。本申请能够解决现有技术中应用启动时可能存在大量的缺页异常导致应用启动耗时较长的问题,有效减少缺页中断的次数,优化应用启动速度,从而提高用户体验感。

技术研发人员:杨力
受保护的技术使用者:深圳依时货拉拉科技有限公司
技术研发日:
技术公布日:2024/1/14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1