一种内存回收方法及终端与流程

文档序号:12176564阅读:170来源:国知局
一种内存回收方法及终端与流程

本发明涉及计算机技术领域,尤其涉及一种内存回收方法及终端。



背景技术:

Android(安卓)是一个可以同时运行多个应用程序的多任务系统,Android在用户使用完某个应用程序时往往不会关闭掉该应用程序,而是让该应用程序已经启动的进程在后台继续运行,用户下次使用该应用程序时就不需要重新启动这些进程,减少了重启该应用程序所花的时间。每个进程在后台运行均会占用相应的内存,后台运行的进程不断增多会导致内存不足从而影响Android正常运行,低内存管理器(英文:Low Memory Killer,简称:LMK)可在内存低于某值时回收部分进程运行时占用的内存,以确保Android正常运行。

然而,部分进程被回收内存后还会自动启动,从而再次占用内存,导致内存回收的效果不好。



技术实现要素:

本发明实施例公开了一种内存回收方法及终端,能够提升内存回收的效果。

第一方面,本发明实施例提供了一种内存回收方法,该方法包括:终端根据预设规则从后台运行的各个应用程序中确定目标应用程序,该目标应用程序是需要被清理的应用程序;该终端冻结该目标应用程序以使所述目标应用程序的进程为不可中断的睡眠状态,并回收内存中该目标应用程序的进程运行时产生的数据;该终端在接收到输入的针对该目标应用程序的触发指令时,解除对该目标应用程序的冻结以使所述目标应用程序的进程为可中断的睡眠状态,并在解除对所述目标应用程序的冻结后运行该目标应用程序。

通过执行上述操作,终端在回收目标应用程序的进行时冻结该目标应用程序,使得该终端在接收到用户输入的针对该目标应用程序的触发指令时才解除对该目标应用程序的冻结,避免了该目标应用程序的进程自动启动而再次占内存,提升了内存回收的效果。

结合第一方面,在第一方面的第一种可能的实现方式中,该终端根据预设规则从后台运行的各个应用程序中确定目标应用程序包括:确定内存的剩余量大于预设内存阈值;根据预设规则确定目标应用程序。

可以理解的是,在终端进入预设的空闲状态时才执行清理应用程序的相关操作不会对用户产生干扰;在内存的剩余量大于该内存阈值执行清理应用程序的相关操作可以保证清理的过程顺畅。

结合第一方面,或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,回收内存中所述目标应用程序的进程运行时产生的数据,包括:将该目标应用程序的进程运行时产生的数据从内存迁移到预设的存储空间。在解除对所述目标应用程序的冻结后运行所述目标应用程序,包括:在解除对所述目标应用程序的冻结后将该产生的数据从该存储空间加载到该内存以启动该目标应用程序。

可以理解的是,将进程运行时产生的数据从内存中迁移到存储空间不仅为内存腾出了空间,还保证了该部分数据不丢失,也即是说,通过这种方式不但保证了内存的顺利回收,还保证了用户下次使用该目标应用程序时可以直接进入到用户上次退出该目标应用时的界面,提升了用户体验。

结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该方法还包括:该终端确定该存储空间可写入数据的剩余量。将该目标应用程序的进程运行时产生的数据从内存迁移到存储空间,包括:在该目标应用程序运行时产生的数据不大于该可写入数据的剩余量时,将该产生的数据从内存迁移到预设的存储空间。

结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,该终端确定该存储空间可写入数据的剩余量,包括:根据预先获取的该存储空间的可写入数据总量计算该存储空间平均每天可写入数据的总量;根据当天可写入数据的总量和当天已写入数据的总量计算该存储空间当天可写入数据的剩余量。

可以理解的是,控制存储空间每天写入数据的总量可以保证该存储空间在预计的寿命周期内不会因为写入次数较多而坏掉。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,该目标应用程序为通过冷启动的启动方式启动所需要的时间超过预设时间阈值的应用程序。

可以理解的是,通过冷启动的方式启动耗时较长的应用程序通常占用的内存比较大,选择这样的应用程序来清理可以释放较多内存;另外,这样的应用程序的进程运行时产生的数据先迁移到存储空间,后面重启目标应用程序时再迁移回内存,能够很明显的缩短重启该目标应用程序的时间。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,或者第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,该终端冻结目标应用程序以使该目标应用程序的进程为不可中断的睡眠状态包括:将目标应用程序的进程设置为TASK_UNINTERRUPTIABLE状态;该解除对该目标应用程序的冻结以使该目标应用程序的进程为可中断的睡眠状态包括:将该目标应用程序的进程设置为TASK_INTERRUPTIBLE状态。

第二方面,本发明实施例提供一种终端,该终端包括确定单元、回收单元和解除单元,其中,确定单元用于根据预设规则从后台运行的各个应用程序中确定目标应用程序所述目标应用程序是需要被清理的应用程序;回收单元用于冻结目标应用程序以使所述目标应用程序的进程为不可中断的睡眠状态,并回收内存中该目标应用程序的进程运行时产生的数据;解除单元用于在接收到输入的针对该目标应用程序的触发指令时,解除对该目标应用程序的冻结以使所述目标应用程序的进程为可中断的睡眠状态,并在解除对所述目标应用程序的冻结后运行该目标应用程序。

通过运行上述单元,终端在回收目标应用程序的进行时冻结该目标应用程序,使得该终端在接收到用户输入的针对该目标应用程序的触发指令时才解除对该目标应用程序的冻结,避免了该目标应用程序的进程自动启动而再次占内存,提升了内存回收的效果。

结合第二方面,在第二方面的第一种可能的实现方式中,该确定单元具体用于确定内存的剩余量大于预设内存阈值根据预设规则确定目标应用程序。

可以理解的是,在终端进入预设的空闲状态时才执行清理应用程序的相关操作不会对用户产生干扰;在内存的剩余量大于该内存阈值执行清理应用程序的相关操作可以保证清理的过程顺畅。

结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该回收单元具体用于将该目标应用程序的进程运行时产生的数据从内存迁移到预设的存储空间;该解除单元在解除对所述目标应用程序的冻结后运行所述目标应用程序具体为:在解除对所述目标应用程序的冻结后将该产生的数据从该存储空间加载到该内存以启动该目标应用程序。

可以理解的是,将进程运行时产生的数据从内存中迁移到存储空间不仅为内存腾出了空间,还保证了该部分数据不丢失,也即是说,通过这种方式不但保证了内存的顺利回收,还保证了用户下次使用该目标应用程序时可以直接进入到用户上次退出该目标应用时的界面,提升了用户体验。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,该终端还包括:计算单元,用于确定该存储空间可写入数据的剩余量;该回收单元将该目标应用程序的进程运行时产生的数据从内存迁移到预设的存储空间具体为:在该目标应用程序运行时产生的数据不大于该可写入数据的剩余量时,将该产生的数据从内存迁移到存储空间。

结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,该计算单元具体用于根据预先获取的该存储空间的可写入数据总量计算该存储空间平均每天可写入数据的总量;根据当天可写入数据的总量和当天已写入数据的总量计算该存储空间当天可写入数据的剩余量。

可以理解的是,控制存储空间每天写入数据的总量可以保证该存储空间在预计的寿命周期内不会因为写入次数较多而坏掉。

结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,或者第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,该目标应用程序为通过冷启动的启动方式启动所需要的时间超过预设时间阈值的应用程序。

可以理解的是,通过冷启动的方式启动耗时较长的应用程序通常占用的内存比较大,选择这样的应用程序来清理可以释放较多内存;另外,这样的应用程序的进程运行时产生的数据先迁移到存储空间,后面重启目标应用程序时再迁移回内存,能够很明显的缩短重启该目标应用程序的时间。

结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,或者第二方面的第四种可能的实现方式,或者第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,该回收单元具体用于将目标应用程序的进程设置为TASK_UNINTERRUPTIABLE状态;该解除单元具体用于将该目标应用程序的进程设置为TASK_INTERRUPTIBLE状态。

第三方面,本发明实施例提供一种终端,该终端包括处理器、存储器和系统总线。存储器用于存储计算机执行指令,处理器和存储器通过系统总线相互连接,当计算机运行时,处理器执行存储器存储的计算机执行指令,以使计算机执行如上述第一方面或其任意一项可选的实现方式所描述的内存回收方法。

上述第三方面的技术效果的描述具体可参见上述对第一方面或其任意一种可选的实现方式的技术效果的相关描述,此处不再赘述。

通过实施本发明实施例,终端在回收目标应用程序的进行时冻结该目标应用程序,使得该终端在接收到用户输入的针对该目标应用程序的触发指令时才解除对该目标应用程序的冻结,避免了该目标应用程序的进程自动启动而再次占内存,提升了内存回收的效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1是本发明实施例提供的一种终端的结构示意图;

图2是本发明实施例提供的一种内存回收方法的流程示意图;

图3是本发明实施例提供的又一种终端的结构示意图;

图4是本发明实施例提供的又一种终端的结构示意图。

具体实施方式

下面将结合附图对本发明实施例中的技术方案进行清楚、详细地描述。

本发明实施例提供的内存回收方法主要应用于终端设备,该终端也可为用户设备(英文:User Equipment,简称:UE)、移动台(英文:Mobile Station,简称:MS)、移动终端(Mobile Terminal)等,可选的,该终端可以具备经无线接入网(英文:Radio Access Network,简称:RAN)与一个或多个核心网进行通信的能力,例如,终端可以是移动电话(或称为“蜂窝”电话)、或具有移动性质的计算机等,例如,终端还可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置。除了终端以外,本发明实施例提供的内存回收方法也可以应用于其他类型的计算机系统。

请参见图1,为本发明实施例应用的终端100的结构示意图。如图1所示,终端100包括存储器180、处理器150以及显示设备140。存储器180存储计算机程序,该计算机程序包括操作系统程序182和应用程序181等。处理器150用于读取存储器180中的计算机程序,然后执行计算机程序定义的方法,例如处理器150读取操作系统程序182从而在该终端100上运行操作系统以及实现操作系统的各种功能,或读取一种或多种应用程序181从而在终端上运行应用。

处理器150可以包括一个或多个处理器,例如,处理器150可以包括一个或多个中央处理器,或者包括一个中央处理器和一个图形处理器。当处理器150包括多个处理器时,这多个处理器可以集成在同一块芯片上,也可以各自为独立的芯片。一个处理器可以包括一个或多个处理核,以下实施例均以多核为例来介绍,但是本发明实施例提供的内存回收方法也可以应用于单核处理器。

另外,存储器180还存储有除计算机程序之外的其他数据183,其他数据183可包括操作系统182或应用程序181被运行后产生的数据,该数据包括系统数据(例如操作系统的配置参数)和用户数据,例如,进程运行时产生的数据,进行运行时产生的数据也是本发明实施例中回收的对象。

存储器180一般包括内存和外存。内存可以为随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)等。本发明实施例所描述的预设的存储空间属于该外存,该存储空间可以包括闪存(flash)、硬盘、光盘、USB盘、软盘或磁带机等。计算机程序通常被存储在外存上,处理器在执行处理前会将计算机程序从外存加载到内存。本发明实施例中的应用程序通常存储在外存上,处理器运行该应用程序时需要将该应用程序加载到该内存上。

操作系统程序182中包含了可实现本发明实施例提供的内存回收方法的计算机程序,从而使得处理器150读取到该操作系统程序182并运行该操作系统后,该操作系统可具备本发明实施例提供的内存回收功能。进一步的,该操作系统可以向上层的应用开放该内存回收功能的调用接口,处理器150从存储器180中读取应用程序181并运行该应用程序后,就可以通过该调用接口调用操作系统中提供的内存回收功能,从而实现内存回收。

终端100还可以包括输入设备130,用于接收输入的数字信息、字符信息或接触式触摸操作/非接触式手势,以及产生与终端100的用户设置以及功能控制有关的信号输入等。具体地,本发明实施例中,该输入设备130可以包括触控面板131。触控面板131,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板131上或在触控面板131的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给该处理器150,并能接收处理器150发来的命令并加以执行。例如,用户在触控面板131上用手指单击某个应用程序的图标,触摸检测装置检测到此次单击带来的这个信号,然后将该信号传送给触摸控制器,触摸控制器再将这个信号转换成坐标发送给处理器150,处理器150根据该坐标和该信号的类型(单击或双击)执行对该某个应用程序的相关处理操作,最后通过该显示面板141显示该某个应用程序的界面。

触控面板131可以采用电阻式、电容式、红外线以及表面声波等多种类型实现。除了触控面板131,输入设备130还可以包括其他输入设备132,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

终端100还可以包括显示设备140,显示设备140,包括显示面板141,用于显示由用户输入的信息或提供给用户的信息以及终端100的各种菜单界面等,在本发明实施例中主要用于显示各个应用程序的相关界面。该显示设备140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)或OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。在其他一些实施例中,触控面板131可覆盖显示面板141上,形成触摸显示屏。

除以上之外,终端100还可以包括用于给其他模块供电的电源190以及用于拍摄照片或视频的摄像头160。终端100还可以包括一个或多个传感器120,例如加速度传感器、光传感器等。终端100还可以包括无线射频(Radio Frequency,RF)电路110,用于与无线网络设备进行网络通信,还可以包括WiFi模块170,用于与其他设备进行WiFi通信。

下面的实施例将以回收后台运行的进程占用的内存为例介绍本发明实施例的内存回收方法,该内存回收方法可以实现在图1所示的操作系统程序182中。

请参见图2,图2是本发明实施例提供的一种内存回收方法的流程示意图,该方法可以基于上述终端100来实现,该方法包括但不限于如下步骤。

步骤S201:终端根据预设规则从后台运行的各个应用程序中确定目标应用程序。

具体地,该目标应用程序为需要被清理的应用程序,该预设规则可以根据实际需要来设置,例如,终端根据预设规则从后台运行的各个应用程序中确定目标应用程序是指:对比后台运行的各个应用程序占用的内存大小,然后将占用内存最大的应用程序确定为需要被清理的应用程序。再如,终端根据预设规则从后台运行的各个应用程序中确定目标应用程序是指:统计后台运行的各个应用程序中连续未被使用的时间,然后将连续未被使用的时间超过预设的某个时间值的应用程序确定为需要被清理的应用程序。再如,终端根据预设规则从后台运行的各个应用程序中确定目标应用程序是指:将后台运行的各个应用程序中通过冷启动的方式启动所需要的时间超过预设时间阈值的应用程序确定为需要被清理的应用程序(例如,将通过冷启动的方式启动耗时超过2.5秒的应用程序确定为需要被清理的应用程序),在实际应用中,应用程序的启动方式包括冷启动和热启动,冷启动为:终端在后台未运行待启动的应用程序的相关进程,因此启动该应用程序时首先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制等),然后将该应用程序的相关信息输出给用户。热启动为:终端在后台运行了待启动的应用程序的相关进程,因此启动该应用程序时不需要创建和初始化Application类,而是直接创建和初始化MainActivity,然后将该应用程序的相关信息输出该用户。该预设规则还存在其他可能性,此处不再一一举例。

进一步地,该终端还可以在进入预设的空闲状态时确定内存的剩余量大于预设内存阈值;再根据预设规则确定目标应用程序。此处的空闲状态是指用户没有操作该终端的状态,没有操作该终端的表现形式包括终端的显示屏熄屏、终端的显示屏锁屏、终端进入待机状态等等。该内存阈值为预先设置的用来表征内存大小的值,另外,还可以判断内存的剩余量是否小于另一阈值,若小于该另一阈值则表明该内存后续可能会不够用,因此在该内存的剩余量大于预设内存阈值且小于该另一阈值时才根据预设规则确定后台运行的各个应用程序中需要被清理的应用程序,例如,当该终端为手机时可以将该内存阈值设置为600M,将该另一阈值设置为1G,那么当该手机的内存大于600M且小于1G时可以根据预设规则确定后台运行的各个应用程序中需要被清理的应用程序。可以理解的是,在终端进入预设的空闲状态时才执行清理应用程序的相关操作不会对用户产生干扰;在内存的剩余量大于该内存阈值执行清理应用程序的相关操作可以保证清理的过程顺畅。

步骤S202:该终端冻结目标应用程序以使所述目标应用程序的进程为不可中断的睡眠状态,并回收内存中该目标应用程序的进程运行时产生的数据。

具体地,确定出的需要清理的应用程序可称之为目标应用程序,冻结所采用的技术可以为linux系统中的进程冻结技术(freezing of tasks),冻结某个进程使该进程进入不可中断的睡眠状态的过程可以为:1、在内核中设置该进程的TIF_SIGPENDING标志;2、该进程在用户态检测标志位,标志位设置了TIF_SIGPENDING标志,则将该进程设置为TASK_UNINTERRUPTIABLE状态。本领域技术人员可以理解的,在基于linux内核的衍生系统,例如安卓系统中,也可以根据前述方式实现实对进程的冻结,在具体的实现中,可能由于衍生系统的相关变化,设置不可中断以及可中断的睡眠状态的标志位名称可能发生变化,但这种名称变化不影响实施本发明技术方案时的技术实质。而在其他系统(如windows系统)中也可以参照该linux中的思想对该目标应用进行冻结,使得该目标应用的进程进入不可中断的睡眠状态。

目标应用程序冻结后该目标应用程序的进程只有在人为触发时才会启动,从而避免了内存回收后该应用程序的进程频繁自动启动而再次占用内存。可选的,此处描述的目标应用程序的进程运行时产生的数据可以具体为该目标应用程序正在运行的所有进程产生的数据,在具体操作中可以先确定该目标应用程序的用户标识符(英文:user identifier,简称:UID),然后将当前正在运行的进程中包含的UID与该目标应用程序的UID相同的进程确定为目标应用程序正在运行的进程。需要说明的是,目标应用程序的进程运行时产生的数据可以包括该进程运行时产生的匿名内存页、文件内存页,其中,该匿名内存页包括该进程的程序占用的堆和栈的内存,以及那些在文件系统里没有相对应的储备文件的内存;该文件内存页包括运行该进程来读写文件时该文件在缓冲区占用的内存。在一种可选的方案中,回收内存中所述目标应用程序的进程运行时产生的数据,可以为:将该目标应用程序的进程运行时产生的数据从内存迁移到预设的存储空间。具体地,冻结目标应用程序后可以将该目标应用程序的进程运行时产生的数据从该内存迁移到该存储空间,既为该内存腾出了空间还保证了该目标应用程序的进程运行时产生的数据不丢失,此处的存储空间可以为一个存储介质,或者一个存储介质中的一部分空间,例如,ZSwap中的交换分区。进一步地,该存储空间存在相应的使用寿命,例如,有些存储空间要求3年以内的损耗不得超过5%,要控制该存储空间的损耗就必须控制该存储空间写入数据的总量,本发明实施例采用如下方式控制存储空间写入数据的总量。

该终端根据预先获取的该存储空间可写入数据的总量以及该存储空间已写入数据的总量计算该存储空间可写入数据的剩余量。这样一来,将内存中该目标应用程序的进程运行时产生的数据从内存迁移到存储空间,可以为:在该目标应用程序运行时产生的数据不大于该可写入数据的剩余量时,将该产生的数据从内存迁移到存储空间。更进一步地,还可以限定每天向该存储空间写入数据的量,也即是说,该终端根据预先获取的该存储空间可写入数据的总量以及该存储空间已写入数据的总量计算该存储空间可写入数据的剩余量,具体为:根据预先获取的该存储空间的可写入数据总量计算该存储空间平均每天可写入数据的总量;根据当天可写入数据的总量和当天已写入数据的总量计算该存储空间当天可写入数据的剩余量。例如,假设要满足该存储空间在3年的损耗不超过5%需要控制器该存储空间写入数据的总量不超过1095G,如果将该1095分摊到3年中的每1天的话,每天可写入数据的总量为1095÷3÷365=1G。如果该终端当天已写入数据的总量为0.8G,那么当天可写入数据的剩余量为1-0.8=0.2G。

当计算出当天可写入数据的剩余量后,该终端先判断该目标应用程序的进程运行时产生的数据是否不大于当天可写入数据的剩余量,若不大于则将该目标应用程序的进程运行时产生的数据迁移到该存储空间中,若不大于则不将该目标应用程序的进程运行产生的数据迁移到该存储空间中,而是将该目标应用程序的进行运存时产生的数据从该内存中清除。可选的,该存储空间的文件可以使用tempfs文件系统重新挂载,以避免该存储空间上的文件暴露给用户,确保了存储在该存储空间上的数据的安全性。

步骤S203:该终端在接收到输入的针对该目标应用程序的触发指令时,解除对该目标应用程序的冻结以使所述目标应用程序的进程为可中断的睡眠状态,并在解除对所述目标应用程序的冻结后运行该目标应用程序。

具体地,用户可以通过触控虚拟按键、声控、手势控制等方式向该终端输入针对目标应用程序的触发指令,相应地,该终端接收该触发指令,然后根据该触发指令解除对该目标应用程序的冻结并运行该目标应用程序。解除对目标应用程序的冻结具体为解除该目标应用程序的已经冻结的进程,使这些进程进入可中断的睡眠状态。

在linux系统中的,解除冻结的进程使之进入到可中断的睡眠状态的过程可以为:根据用户输入的触发指令清除内核中设置的该目标应用程序的进程的TIF_SIGPENDING标志,并将该进程设置为TASK_INTERRUPTIBLE状态,用户态进程接收被设置为TASK_INTERRUPTIBLE状态时发送的唤醒事件,至此该目标应用程序被唤醒,即解除了对目标应用程序的冻结。在其他系统(如windows系统)中也可以参照该linux中的思想对该目标应用进行解冻,使得该目标应用的进程进入可中断的睡眠状态。

在一种可选的方案中,当将该目标应用程序的进程运行时产生的数据从内存迁移到该预设的存储空间时,在解除对所述目标应用程序的冻结后运行所述目标应用程序,可以为:将该产生的数据从该存储空间加载到该内存以启动该目标应用程序。可选的,可以在解除对目标应用程序的冻结的同时就开始将该目标应用程序的进程运行时产生的数据从该存储空间加载到该内存,而不是解除对该目标应用程序的冻结后,从该内存中读取该目标应用程序的进程发现缺页时才将该目标应用程序的进程运行时产生的数据从该存储空间加载到该内存。可选的,还可以设置进程因缺页产生的读写操作的优先级高于该进程的其他读写操作的优先级,以便同时有多个读写操作需要处理时优先处理因缺页产生的读写操作,这样可以较顺畅地启动该目标应用程序。

需要说明的是,将该目标应用程序的进程运行时产生的数据从内存迁移到磁盘的过程中时,可以以进程为单位对每个进程运行时产生的匿名内存页分别进行压缩,然后将多个匿名内存页压缩后的数据组成新的页,再将该新的页迁移到该存储空间上,后续要再次运行该目标应用程序时可以再将该新的页迁移到该内存上,并在该内存上对该新的页解压以还原出上述多个匿名内存页,然后读取该多个匿名内存页来运行该目标应用程序。举例来说,页的单位通常为4K,如果匿名内存页的压缩率为50%,那么,每个匿名内存页压缩后大小为2K,两个匿名内存页压缩后的大小为2K+2K=4K,因此可以将两个匿名内存页压缩后的数据组成一个新的页,并对该新的页的结构进行标记以区分该两个匿名内存页各自对应该新的页中的哪部分,后续对该新的页解压时也可以根据标记的信息还原出这两个匿名内存页。可以理解的是,对该匿名内存页压缩后在迁移到该存储空间可以减少该存储空间的读写开销,从而提高该存储空间的使用寿命。

需要说明的是,回收内存时可以将较短时间未使用的进程的匿名内存页存放到缓冲区,将较长时间未使用的进程的匿名内存页迁移到该存储空间上,由于该终端运行该较短时间未使用的进程的概率较大,因此这样做可以很大概率地提高该终端读取匿名内存页的效率。

在图2所描述的方法中,终端在回收目标应用程序的进行时冻结该目标应用程序,使得该终端在接收到用户输入的针对该目标应用程序的触发指令时才解除对该目标应用程序的冻结,避免了该目标应用程序的进程自动启动而再次占内存,提升了内存回收的效果。

以上主要介绍了本发明实施例提供的方法的具体流程,下面结合图3以Android操作系统为例,介绍本发明实施例提供的方法的实现位置和运行时状态,更具体的方法流程可参考前述实施例所述。

请参阅图3,为本发明实施例提供的终端300的结构示意图。该终端300包括应用层310和操作系统层350,该操作系统可以为Android操作系统。操作系统层350又分为框架层320、核心库层330和驱动层340。其中,图3中的操作系统层350可以认为是图1中操作系统182的一种具体实现,图3中的应用层310可以认为是图1中应用程序181的一种具体实现。驱动层340包括CPU驱动341、GPU驱动342以及显示控制器驱动343等。核心库层330是操作系统的核心部分,包括输入/输出服务331、核心服务332、数据压缩服务333、数据解压服务334、内存回收服务335等,其中,数据压缩服务333用于对回收内存时回收的数据进行压缩,数据解压服务334用于对从存储空间读取的数据进行解压,然互加载到内存中运行,内存回收服务335用于回收应用程序的进行运行时产生的数据。框架层320可包括决策服务324、系统服务(System service)321、网页服务(Web Service)322和用户服务(Customer Service)323等;决策服务324中,可包括事件处理决策、应用程序决策、寿命识别决策、内存回收决策等,其中,事件处理决策用于定义各种事件的作用,应用程序决策用于确定需要被清理的应用程序(例如,确定通过冷启动的方式启动耗时超过2.5秒的应用程序为需要被清理的应用程序),寿命识别决策用于获取存储空间的使用寿命,内存回收决策定义了会收内存的方式(例如,以应用程序为单位回收内存)。应用层310可包括图库311、媒体播放器(Media Player)312以及浏览器(Browser)313等。

另外,在驱动层340之下,该终端300还包括硬件层360。该终端300的硬件层可以包括中央处理器(英文:Central Processing Unit,简称:CPU)361和图形处理器(英文:Graphic Processing Unit,简称:GPU)362(相当于图1中的处理器150的一种具体实现),还可以包括存储器363(相当于图1中的存储器180),包括内存和外存,还可以包括输入设备364(相当于图1中的输入设备132)、显示设备365(相当于图1中的显示设备140),例如液晶显示器(Liquid Crystal Display,LCD)、全息成像(Holographic)、投影(Projector)等,还可以包括一个或多个传感器366(相当于图1中的传感器120)。当然除此之外,硬件层360还可以包括图1中示出的电源、摄像头、RF电路和WiFi模块,还可以包括图1中也没有示出的其他硬件模块,例如内存控制器和显示控制器等。

上述详细阐述了本发明实施例的方法,为了便于更好地实施本发明实施例的上述方案,相应地,下面提供了本发明实施例的装置。

请参见图4,图4是本发明实施例提供的一种终端40的结构示意图,该终端40可以包括确定单元401、回收单元402和解除单元403,其中,确定单元401用于根据预设规则从后台运行的各个应用程序中确定目标应用程序,该目标应用程序是需要被清理的应用程序。回收单元402用于冻结目标应用程序以使所述目标应用程序的进程为不可中断的睡眠状态,并回收内存中该目标应用程序的进程运行时产生的数据。解除单元403用于在接收到输入的针对该目标应用程序的触发指令时,解除对该目标应用程序的冻结以使所述目标应用程序的进程为可中断的睡眠状态,并在解除对所述目标应用程序的冻结后运行该目标应用程序。

通过运行上述单元,终端在回收目标应用程序的进行时冻结该目标应用程序,使得该终端在接收到用户输入的针对该目标应用程序的触发指令时才解除对该目标应用程序的冻结,避免了该目标应用程序的进程自动启动而再次占内存,提升了内存回收的效果。

在一种可选的方案中,该确定单元具体用于确定内存的剩余量大于预设内存阈值,根据预设规则确定目标应用程序。

可以理解的是,在终端进入预设的空闲状态时才执行清理应用程序的相关操作不会对用户产生干扰;在内存的剩余量大于该内存阈值执行清理应用程序的相关操作可以保证清理的过程顺畅。

在又一种可选的方案中,该回收单元402具体用于将该目标应用程序的进程运行时产生的数据从内存迁移到预设的存储空间;该解除单元403在解除对所述目标应用程序的冻结后运行所述目标应用程序具体为:在解除对所述目标应用程序的冻结后将该产生的数据从该存储空间加载到该内存以启动该目标应用程序。

可以理解的是,将进程运行时产生的数据从内存中迁移到存储空间不仅为内存腾出了空间,还保证了该部分数据不丢失,也即是说,通过这种方式不但保证了内存的顺利回收,还保证了用户下次使用该目标应用程序时可以直接进入到用户上次退出该目标应用时的界面,提升了用户体验。

在又一种可选的方案中,该存储空间包括用于存储各个进程运行时产生的数据的交换分区,该终端40还包括计算单元,该计算单元用于确定该存储空间可写入数据的剩余量;该回收单元将该目标应用程序的进程运行时产生的数据从内存迁移到预设的存储空间具体为:在该目标应用程序运行时产生的数据不大于该可写入数据的剩余量时,将该产生的数据从内存迁移到预设存储空间。

在又一种可选的方案中,所述计算单元具体用于根据预先获取的所述存储空间的可写入数据总量计算所述存储空间平均每天可写入数据的总量;根据当天可写入数据的总量和当天已写入数据的总量计算所述存储空间当天可写入数据的剩余量。

可以理解的是,控制存储空间每天写入数据的总量可以保证该存储空间在预计的寿命周期内不会因为写入次数较多而坏掉。

在又一种可选的方案中,该目标应用程序为通过冷启动的启动方式启动所需要的时间超过预设时间阈值的应用程序。

可以理解的是,通过冷启动的方式启动耗时较长的应用程序通常占用的内存比较大,选择这样的应用程序来清理可以释放较多内存;另外,这样的应用程序的进程运行时产生的数据先迁移到存储空间,后面重启目标应用程序时再迁移回内存,能够很明显的缩短重启该目标应用程序的时间。

在又一种可选的方案中,该回收单元402具体用于将目标应用程序的进程设置为TASK_UNINTERRUPTIABLE状态;该解除单元403具体用于将该目标应用程序的进程设置为TASK_INTERRUPTIBLE状态。

在本发明实施例中各个单元的具体实现还可以对应参照图2所示的方法实施例的相应描述。

在图4所描述的终端40中,终端40在回收目标应用程序的进行时冻结该目标应用程序,使得该终端在接收到用户输入的针对该目标应用程序的触发指令时才解除对该目标应用程序的冻结,避免了该目标应用程序的进程自动启动而再次占内存,提升了内存回收的效果。

综上所述,通过实施本发明实施例,终端在回收目标应用程序的进行时冻结该目标应用程序,使得该终端在接收到用户输入的针对该目标应用程序的触发指令时才解除对该目标应用程序的冻结,避免了该目标应用程序的进程自动启动而再次占内存,提升了内存回收的效果。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上实施例仅揭露了本发明中较佳实施例,不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

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