一种终端内存优化的方法、装置及系统与流程

文档序号:11133730阅读:250来源:国知局
一种终端内存优化的方法、装置及系统与制造工艺

本发明涉及电子设备领域,主要涉及一种终端内存优化的方法、装置及系统。



背景技术:

熟知的,安卓Android系统内存不足是一种持续过载的系统状态,此时进程对系统内存资源的需求超过了其固有的容量。就Android系统结构而言,内存不足的发生是其固有的属性。因为在事先没有任何协商和请求许可机制的内存资源共享结构中,多个进程同时请求系统内存的可能性必然存在,但所有进程的内存请求不可能同时得到满足。如果进程请求的内存量超过系统释放的内存量,此状况持续一定的时间,内存占用量必定超过一定门限或被耗尽。

为了缓解系统内存不足问题,安卓操作系统内核Android Kernel会定时执行一次检查,杀死一些进程,释放内存,判断进程是否需要杀死的机制是低内存管理工具Low Memory Killer(LMK),LMK主要是通过进程的oom_adj来判定进程的重要程度。oom_adj值越小,程序越重要,被杀的可能性越低。oom_adj的大小和进程的类型以及进程被调度的次序有关。如:Android系统定义各种进程的oom_adj,例如,CORE_SERVER_ADJ代表一些核心的服务的oom_adj,数值为-12,这类进程永远也不会被杀掉。而EMPTY_APP_ADJ代表空应用的,oom_adj,数值为15,这类进程最优先被杀掉。此外,在LMK中,定义了两个数组,表示当系统内存低于某一值,就在低于某一警戒级别的线程中,选择一占用内存最大的进程,然后杀死该进程,以释放其占用的内存。lowmem_adj中各项数值代表阈值的警戒级别,lowmem_minfree代表对应级数的可用内存。LMK开始工作时,首先根据阈值表确定当前的警戒级别,则oom_adj高于警戒级别的进程是待杀的范围。然后遍历所有进程的oom_adj值,找到大于min_adj的进程,若找到多个,则发送SIGKILL信号,杀掉占用内 存最大的进程。

目前,Android系统中有多种实现进程重启的方法,如在service的onStartCommand方法中返回START_STICKY等,这类进程重启会严重影响系统,这也是当系统内存较少时,系统运行变慢的原因之一。在内存剩余不多时,LMK在杀掉后台进程时会触发系统自身的进程调度策略,但这却是十分消耗系统资源的操作,特别是在当进程反复重启,并频繁向系统申请内存时,严重导致系统整体性能下降。

进一步,需要指的是系统内存占用量与系统响应速度之间的关系,如图1所示,当内存占用量较小时,系统或应用响应延迟与内存占用量之间呈线性关系,延迟增长缓慢;负载超过崖点之后,随统内存占用量的增加,吞吐量的增量逐渐趋缓,延迟增长较快;当负载越过崖点之后,由于LMK频繁杀掉后台进程,以及后台进程重启,导致响应延迟急剧上升。由此可以看出,系统内存和其它资源在崖点之前使用效率最高,崖点之后是内存崩溃区间。系统内存工作在轻度负载状态时应该是较为理想的,可以最大限度地利用资源,但这也增加了滑向内存控制崩溃的可能性,急待需要对内存负载加以约束和限制。



技术实现要素:

本发明的目的是提供一种终端内存优化的方法、装置及系统,在内存不足状况达到十分严重的程度之前以随机方式杀掉系统后台的进程,并以随机重启时间重启被杀掉的进程,从而缓解内存不足对系统性能的影响。

为了解决上述问题,本发明提供了一种终端内存优化的方法,包括:

获取当前终端的操作系统运行的可用内存的大小;

根据所述可用内存的大小与预设的可用内存级别,对终端的操作系统运行的内存进行优化。

其中,获取当前终端的操作系统运行的可用内存的大小的步骤包括:

通过低内存管理工具获取所述当前终端的操作系统运行的可用内存的大小。

其中,根据所述可用内存的大小与预设的可用内存级别,对终端的操作系统运行的内存进行优化的步骤包括:

若所述可用内存的大小小于所述预设的可用内存级别的最小级别,则杀掉所述当前系统内警戒级别最低的进程;

若所述可用内存的大小位于所述预设可用内存级别中第I级别和第I+1级别之间,则随机杀掉所述当前系统内的进程。

其中,若所述可用内存的大小位于所述预设可用内存级别中第I级别和第I+1级别之间,则随机杀掉所述当前系统内的进程的步骤包括:

获取0至1之间的伪随机数P1,以及随机杀掉所述当前系统内进程的概率P2;

比较所述伪随机数P1与概率P2的值的大小,若所述伪随机数P1的值大于所述概率P2的值,则杀掉所述当前系统内进程中警戒级别为I的进程。

其中,若所述伪随机数P1的值大于所述概率P2的值,则杀掉所述当前系统内进程中警戒级别为I的进程后,所述方法还包括:

过一预设时间后重启所述随机被杀掉的警戒级别为I的进程,其中,重启所述随机被杀掉的警戒级别为I的进程的概率为P2。

其中,获取随机杀掉所述当前系统内进程的概率P2的步骤包括:

采用如下计算公式:

获取所述概率P2的值;

其中,所述freemem为所述当前终端的操作系统运行的可用内存的大小,lowmem_minfree[i]为预设的可用内存级别数组。

其中,所述预设时间为伪随机数P3,其中,所述伪随机数P3为0至自定义重新启动时间restart time之间的伪随机数。

此外,本发明还提供了一种终端内存优化的装置,包括:

获取模块,用于获取当前终端的操作系统运行的可用内存的大小;

优化模块,用于根据所述可用内存的大小与预设的可用内存级别,对终端的操作系统运行的内存进行优化。

其中,所述获取模块具体用于:

通过低内存管理工具获取所述当前终端的操作系统运行的可用内存的大小。

其中,所述优化模块具体用于:

若所述可用内存的大小小于所述预设的可用内存级别的最小级别,则杀掉所述当前系统内警戒级别最低的进程;

若所述可用内存的大小位于所述预设可用内存级别中第I级别和第I+1级别之间,则随机杀掉所述当前系统内的进程。

其中,若所述可用内存的大小位于所述预设可用内存级别中第I级别和第I+1级别之间,则随机杀掉所述当前系统内的进程的步骤包括:

获取0至1之间的伪随机数P1,以及随机杀掉所述当前系统内进程的概率P2;

比较所述伪随机数P1与概率P2的值的大小,若所述伪随机数P1的值大于所述概率P2的值,则杀掉所述当前系统内进程中警戒级别为I的进程。

其中,若所述伪随机数P1的值大于所述概率P2的值,则杀掉所述当前系统内进程中警戒级别为I的进程后,所述方法还包括:

过一预设时间后重启所述随机被杀掉的警戒级别为I的进程,其中,重启所述随机被杀掉的警戒级别为I的进程的概率为P2。

其中,获取随机杀掉所述当前系统内进程的概率P2的步骤包括:

采用如下计算公式:

获取所述概率P2的值;

其中,所述freemem为所述当前终端的操作系统运行的可用内存的大小,lowmem_minfree[i]为预设的可用内存级别数组。

其中,所述预设时间为伪随机数P3,其中,所述伪随机数P3为0至自定义重新启动时间restart time之间的伪随机数。

最后,本发明还提供了一种系统,包括上述的终端内存优化的装置。

本发明的上述技术方案的有益效果如下:

上述方案中,通过监控系统的可用内存空间来评估系统内存控制程度,一旦发现内存不足,则从当前警戒级别的后台进程中随机选择杀掉一部分进程。若被杀掉的后台进程中,有可重启进程,对重启时间也做随机化处理,避免后台进程被杀掉后又同时重启,缓解内存不足对系统性能的影响。

附图说明

图1表示系统内存占用量与系统响应速度之间的关系图;

图2表示本发明实施例中终端内存优化的方法示意图;

图3表示本发明实施例中根据当前系统可用内存的大小与预设的可用内存级别,对终端的操作系统运行的内存进行优化的方法示意图;

图4表示本发明实施例中终端内存优化的方法的又一示意图;

图5表示本发明实施例中终端内存优化方法相较于传统的内存管理方法的效果对比图;

图6表示本发明实施例中终端内存优化的装置示意图。

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附体及具体实施例进行详细描述。

本发明针对目前系统内存不足时,LMK在杀掉后台进程时触发进程反复重启,导致系统整体性能下降的问题,提供了一种终端内存优化的方法、装置及系统。

如图2所示,本发明实施例提供了一种终端内存优化的方法,包括:

步骤S11:获取当前终端的操作系统运行的可用内存的大小;

步骤S12:根据所述可用内存的大小与预设的可用内存级别,对终端的操作系统运行的内存进行优化。

本发明的上述实施例中,通过监控终端操作系统的可用内存空间来评估系统内存的控制程度,对终端的操作系统运行的内存进行优化,缓解内存不足对系统性能的影响。

具体地,步骤S11中获取当前终端的操作系统运行的可用内存的大小的步骤包括:

通过低内存管理工具获取所述当前终端的操作系统运行的可用内存的大小。

具体地,如图3所示,步骤S12中根据所述可用内存的大小与预设的可用 内存级别,对终端的操作系统运行的内存进行优化的步骤包括:

步骤S121:若所述可用内存的大小小于所述预设的可用内存级别的最小级别,则杀掉所述当前系统内警戒级别最低的进程;

步骤S122:若所述可用内存的大小位于所述预设可用内存级别中第I级别和第I+1级别之间,则随机杀掉所述当前系统内的进程。

应当补充的是,若所述可用内存的大小大于所述预设的可用内存级别的最小级别,表明当前系统内存足够,对所述当前系统内的进程不做优化处理。

进一步地,步骤S122中若所述可用内存的大小位于所述预设可用内存级别中第I级别和第I+1级别之间,则随机杀掉所述当前系统内的进程的步骤具体包括:

获取0至1之间均匀分布的伪随机数P1,以及随机杀掉所述当前系统内进程的概率P2。其中,本实施例采用线性同余的方法得到伪随机数P1的值;

比较所述伪随机数P1与概率P2的值的大小,若所述伪随机数P1的值大于所述概率P2的值,则杀掉所述当前系统内进程中警戒级别为I的进程。当然,若所述伪随机数P1的值小于所述概率P2的值,则对当前系统内的进程不做优化处理。

需要补充的是,过一预设时间后重启所述随机被杀掉的警戒级别为I的进程。本实施例中,重启所述随机被杀掉的警戒级别为I的进程的概率为P2;所述预设时间为伪随机数P3,其中,所述伪随机数P3为0至自定义重新启动时间restart time之间均匀分布的伪随机数。

本实施例中,获取随机杀掉所述当前系统内进程的概率P2的步骤包括:

采用如下计算公式:

获取所述概率P2的值;

其中,所述freemem为所述当前终端的操作系统运行的可用内存的大小,lowmem_minfree[i]为预设的可用内存级别数组。

综上,为更好的实现上述终端内存优化的方法,本实施例具体提供了一种方法,如图4所示:

步骤1:比较当前系统可用内存与预设的可用内存级别lowmem_minfree 数组。若当前系统可用内存大于lowmem_minfree数组中的最大值,说明此时系统内存足够,系统内的进程不被杀掉;

步骤2:根据当前系统可用内存落在lowmem_minfree数组哪个区间,确定当前的警戒级别。若当前系统可用内存小于lowmem_minfree数组中的最小值,说明此时系统内存严重不足,直接将oom_adj最大的一类后台进程全部杀掉;

步骤3:若当前系统可用内存介于lowmem_minfree[i]和lowmem_minfree[i+1]之间,说明此时系统内存不足已经出现,但尚未达到十分严重的程度,LMK应执行随机化杀进程和随机化重启时间操作。

本发明的上述实施例中,在内存不足状况但尚未达到十分严重的程度时,以随机方式杀掉后台进程,并以随机重启时间重启部分后台进程,从而缓解内存不足对系统性能的影响。当出现内存不足时,采用本实施例提供的优化内存的方法产生的可用内存量波动比传统的LMK内存管理方法更加平缓,如图5所示。

此外,如图6所示,本发明实施例还提供了一种终端内存优化的装置,包括:

获取模块S21,用于获取当前终端的操作系统运行的可用内存的大小;

优化模块S22,用于根据所述可用内存的大小与预设的可用内存级别,对终端的操作系统运行的内存进行优化。

进一步地,所述获取模块S21具体用于:

通过低内存管理工具获取所述当前终端的操作系统运行的可用内存的大小。

所述优化模块S22具体用于:

若所述可用内存的大小小于所述预设的可用内存级别的最小级别,则杀掉所述当前系统内警戒级别最低的进程;

若所述可用内存的大小位于所述预设可用内存级别中第I级别和第I+1级别之间,则随机杀掉所述当前系统内的进程,其中,进一步地,随机杀掉所述当前系统内进程的步骤包括:

获取0至1之间的伪随机数P1,以及随机杀掉所述当前系统内进程的概 率P2;

比较所述伪随机数P1与概率P2的值的大小,若所述伪随机数P1的值大于所述概率P2的值,则杀掉所述当前系统内进程中警戒级别为I的进程。

进一步地,过一预设时间后重启所述随机被杀掉的警戒级别为I的进程,其中,重启所述随机被杀掉的警戒级别为I的进程的概率为P2;所述预设时间为伪随机数P3,其中,所述伪随机数P3为0至自定义重新启动时间restart time之间的伪随机数。

应当指出的是,获取随机杀掉所述当前系统内进程的概率P2的步骤包括:

采用如下计算公式:

获取所述概率P2的值;

其中,所述freemem为所述当前终端的操作系统运行的可用内存的大小,lowmem_minfree[i]为预设的可用内存级别数组。

最后本发明还提供了一种系统,包括上述的终端内存优化的装置。

上述发明实施例的终端内存优化的方法、装置及系统,通过监控系统的可用内存空间来评估系统内存控制程度,一旦发现内存不足,则通过LMK随机方式,从当前警戒级别的后台进程中选择杀掉一部分。若被杀掉的后台进程中,有可重启进程,对重启时间也做随机化处理,避免后台进程被杀掉后又同时重启,缓解内存不足对系统性能的影响。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1