基于Android虚拟机快速提升应用启动性能的方法技术

技术编号:25947387 阅读:47 留言:0更新日期:2020-10-17 03:39
本发明专利技术公开了一种基于Android虚拟机快速提升应用启动性能的方法,包括:启动信息收集步骤,Android虚拟机在应用进程启动时,通过JIT模块收集所述应用进程启动期间的函数及方法类所产生的启动profile信息;启动编译优化步骤,所述应用进程启动完成,根据所述启动profile信息进行编译优化,生成art镜像代码。本发明专利技术至少具有以下有益效果:采集的数量级小,能在不影响负载的情况下,高频率持续有效地提升Android虚拟机中应用进程的启动性能,减少用户等待时间。

【技术实现步骤摘要】
基于Android虚拟机快速提升应用启动性能的方法
本专利技术涉及Android虚拟机
,特别涉及一种基于Android虚拟机快速提升应用启动性能的方法。
技术介绍
Android的系统层以及应用都是基于java编写,基于虚拟机编译运行。现有基于Android虚拟机的优化采用PGO(Profile-GuidedOptimization)机制来提升性能时,触发该PGO机制条件苛刻,等待的周期极长,在执行优化时,需要收集全部的profile信息,在漫长的等待周期内,profile信息量变得极大,进一步增长了优化压力与优化耗时,且在优化时极容易因唤醒操作中断优化导致长期无法有效优化,使得用户体验变得更差。
技术实现思路
本专利技术旨在至少解决现有技术中存在的技术问题之一。为此,本专利技术提出一种基于Android虚拟机快速提升应用启动性能的方法,能够高频率有效优化应用启动速度。根据本专利技术的第一方面实施例的基于Android虚拟机快速提升应用启动性能的方法,包括:启动信息收集步骤,Android虚拟机在应用进程启动时,通过JIT模块收集所述应用进程启动期间的函数及类所产生的启动profile信息;启动编译优化步骤,所述应用进程启动完成,根据所述启动profile信息进行编译优化,生成art镜像代码。根据本专利技术实施例的基于Android虚拟机快速提升应用启动性能的方法,至少具有如下有益效果:通过收集应用进程启动时的profile信息,根据启动profile信息进行优化编译,生成相应的执行代码,下次启动时,不通过Jit模块通过加载该执行代码,加快应用启动速度;采集的数量级小,能在不影响负载的情况下高频率持续有效地提升Android虚拟机中应用进程的启动性能,减少用户等待时间。根据本专利技术的一些实施例,所述启动信息收集步骤包括:所述Andriod虚拟机监测识别所述应用进程的运行状态,检测到所述应用进程切换为启动状态,通过JIT模块获取所述应用进程启动期间运行的函数及类,并启动profile线程;根据所述应用进程启动期间运行的函数及类,从profile信息文件中收集得到所述启动profile信息。根据本专利技术的一些实施例,所述启动信息收集步骤中还包括:所述Andriod虚拟机在收集所述启动Profile信息之前,通过设置信息放开启动部分的profile信息收集阈值限制。根据本专利技术的一些实施例,所述启动信息收集步骤中还包括:所述启动profile信息被收集后,清除掉所述启动profile信息对应在所述profile信息文件中的数据。根据本专利技术的一些实施例,所述启动信息收集步骤中还包括:所述启动profile信息被收集后,在所述Andriod虚拟机的runtime中标记所述启动profile信息的收集状态为已完成。根据本专利技术的一些实施例,所述启动编译优化步骤包括:所述应用进程启动完成则触发检测线程,所述检测线程判定是否有新收集到所述启动profile信息,得到判断结果;根据判断结果创建编译优化进程,通过dex2oat基于所述启动profile信息进行优化编译,生成art镜像代码。根据本专利技术的一些实施例,所述应用进程启动完成则触发检测线程的方法包括:AMS触发检测机制,所述检测线程运行在后台包管理服务的消息处理循环队列中;通过所述消息处理循环队列,依次检测所述应用进程是否符合PGO的条件;根据所述启动信息收集状态得到所述判断结果。根据本专利技术的一些实施例,所述创建编译优化进程的方法包括:设置dex2oat编译开销线程为-j*,进程调度策略为SP_BACKGROUND,进程优先级为ANDROID_PRIORITY_LOWEST。本专利技术的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。附图说明本专利技术的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1为本专利技术实施例的主要流程步骤的示意图;图2为本专利技术实施例的启动信息收集步骤的示意图;图3为本专利技术实施例的启动编译优化步骤的示意图;图4为本专利技术实施例在原有PGO机制上增加的新流程示意图。具体实施方式下面详细描述本专利技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本专利技术,而不能理解为对本专利技术的限制。名词解释:JIT:just-in-timecompilation,狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。AMS:ActivityManagerService,Android系统的核心服务程序,是Android上层框架管理,即应用运行时的管理服务。PMS:,PackageManagerService,Android系统的核心服务程序,是Android上层框架管理,即应用程序的安装包管理服务。PGO:Profile-GuidedOptimization,Android虚拟机提供的一种优化机制。profile信息:PGO机制中产生的信息,用于优化编译。dex2oat:Android虚拟机提供的一种优化工具。art镜像:dex2oat生成的.art可执行文件。参照图1,本专利技术的实施例中,优化方法包括两部分:启动信息收集步骤及启动编译优化步骤。其中,在启动信息收集步骤中,Android虚拟机通过JIT模块收集应用进程启动期间的函数及类所产生的profile信息,得到启动profile信息。在启动编译优化步骤中,当应用程序启动完成后,根据在启动信息收集步骤中获得的启动profile信息进行编译优化,生成art镜像代码。本专利技术实施例中,启动信息收集步骤参照图2,包括:首先,Android虚拟机通过设置信息,放开关于应用程序启动部分的profile信息收集阈值限制。Google设计中设定了profile信息收集相关的阈值限制,以便降低减少收集信息,打开该限制有利于获取完整启动相关的profile信息,获得较好的优化效果。应用进程启动时,Android虚拟机中会将字节码经JIT模块编译运行,参见图4,应用进程APP的运行过程包括:启动状态、运行中状态及停止状态。Android虚拟机监测识别应用程序的启动状态,通过JIT模块获取启动状态时相关的函数(在Java中,函数也被称为方法,Method)及类,启动profile线程。profile线程将会收集所有的profile信息存入到相应的profile文档中。Android虚拟机从profile文档中抽取出在启动状态运行的函数及方法所产生的profile信息,得到启动profile信息。在本专利技术的实施例中,在收集启动profile信息的过程中,还将原profile文档中被采集的相应profile信息进行清除,防止profile文档合并本文档来自技高网...

【技术保护点】
1.一种基于Android虚拟机快速提升应用启动性能的方法,其特征在于,包括:/n启动信息收集步骤,Android虚拟机在应用进程启动时,通过JIT模块收集所述应用进程启动期间的函数及类所产生的启动profile信息;/n启动编译优化步骤,所述应用进程启动完成,根据所述启动profile信息进行编译优化,生成art镜像代码。/n

【技术特征摘要】
1.一种基于Android虚拟机快速提升应用启动性能的方法,其特征在于,包括:
启动信息收集步骤,Android虚拟机在应用进程启动时,通过JIT模块收集所述应用进程启动期间的函数及类所产生的启动profile信息;
启动编译优化步骤,所述应用进程启动完成,根据所述启动profile信息进行编译优化,生成art镜像代码。


2.根据权利要求1所述的基于Android虚拟机快速提升应用启动性能的方法,其特征在于,所述启动信息收集步骤包括:
所述Andriod虚拟机监测识别所述应用进程的运行状态,检测到所述应用进程切换为启动状态,通过JIT模块获取所述应用进程启动期间运行的函数及类,并启动profile线程;
根据所述应用进程启动期间运行的函数及类,从profile信息文件中收集得到所述启动profile信息。


3.根据权利要求2所述的基于Android虚拟机快速提升应用启动性能的方法,其特征在于,所述启动信息收集步骤中还包括:
所述Andriod虚拟机在收集所述启动Profile信息之前,通过设置信息放开启动部分的profile信息收集阈值限制。


4.根据权利要求2所述的基于Android虚拟机快速提升应用启动性能的方法,其特征在于,所述启动信息收集步骤中还包括:
所述启动profile信息被收集后,清除掉所述启动profile信息对应在所述profile信息文件中的数据。

<...

【专利技术属性】
技术研发人员:蒋斌朱振华
申请(专利权)人:珠海全志科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1