CN108287760B - 终端设备控制方法及装置、终端设备及计算机可读存储介质 - Google Patents

终端设备控制方法及装置、终端设备及计算机可读存储介质 Download PDF

Info

Publication number
CN108287760B
CN108287760B CN201710670011.4A CN201710670011A CN108287760B CN 108287760 B CN108287760 B CN 108287760B CN 201710670011 A CN201710670011 A CN 201710670011A CN 108287760 B CN108287760 B CN 108287760B
Authority
CN
China
Prior art keywords
target
physical page
activity
value
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710670011.4A
Other languages
English (en)
Other versions
CN108287760A (zh
Inventor
陈乾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Xingji Meizu Technology Co ltd
Original Assignee
Meizu Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Meizu Technology Co Ltd filed Critical Meizu Technology Co Ltd
Priority to CN201710670011.4A priority Critical patent/CN108287760B/zh
Publication of CN108287760A publication Critical patent/CN108287760A/zh
Application granted granted Critical
Publication of CN108287760B publication Critical patent/CN108287760B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种终端设备控制方法及装置、终端设备及计算机可读存储介质,该方法包括判断目标应用程序是否满足冻结条件,如是,获取目标应用程序正在运行的目标进程,执行对目标进程的内存回收操作,然后,对目标应用程序执行冻结操作。该装置包括冻结条件判断模块、获取模块、内存回收模块以及冻结模块,用于实现上述的终端设备控制方法。本发明提供的终端设备具有处理器以及存储器,处理器执行计算机程序时可以实现上述的终端设备控制方法。本发明的计算机可读存储介质上存储有用于实现上述方法计算机程序。本发明可以在应用程序被冻结前执行内存回收操作,减小被冻结的应用程序所占用的内存。

Description

终端设备控制方法及装置、终端设备及计算机可读存储介质
技术领域
本发明涉及电子设备的控制领域,具体地,是在一种在终端设备冻结应用程序前实现内存回收方法以及实现这种方法的装置,还涉及一种实现上述方法的终端设备以及计算机可读存储介质。
背景技术
智能手机、平板电脑等终端设备成为人们日常生活中最经常使用的电子设备,人们喜欢在智能电子设备上安装各种应用程序,并且在终端设备上同时运行大量的应用程序。但由于运行大量的应用程序将对终端设备的资源造成很大的负担,例如部分应用程序长时间在后台运行并且占用CPU资源、传感器资源以及内存资源,导致终端设备运行缓慢。因此,终端设备采用对应用程序执行冻结的机制,对应用程序冻结后,应用程序将不再占用CPU资源,而只是占用内存资源,从而释放部分应用程序占用的资源。
另外,终端设备的操作系统中,为了加快对磁盘进行读写操作的速度,通常会将大量的数据缓存在内存中。进程在使用内存前,需要提出申请并开始占用内存,当使用完内存后再及时回收内存。由于用户在使用终端应用的过程中,经常会频繁更换应用,为了减少用户的等待时长,操作系统通常会为转入后台的应用进程保留其占用的内存。但是,当后台应用过多,内存被大量占用而得不到回收时,会因为内存分配不足导致操作系统运行出现异常。
为了避免因内存分配不足导致的系统异常,操作系统引入了对内存的回收机制。但是,当用户需要使用这些进程对应的应用时,这些进程需要完全的进行重新加载,耗时长,降低用户体验。因此,现有技术提出在不关闭进程的情况下进行内存回收的方法。近期最少使用链表LRU,将物理页按照近期的使用情况进行排列,当内存不足时,系统会优先对其中的INACTIVE_ANON和INACTIVE_FILE这两个链表中的物理页进行回收。ANON代表匿名映射,没有后备存储器,FILE代表文件映射,INACTIVE代表处于非活动状态。当进程需要使用回收的物理页上的内容时,只要从磁盘中加载相应内容即可,减少耗时。但是,前台运行的应用进程或者后台运行的优先级高的应用进程,其占用的物理页也可能处于INACTIVE_ANON和INACTIVE_FILE这两个链表中,对这两个链表中的物理页进行回收可能会影响这两类应用的正常运行,降低用户体验。
为了保证前台应用进程和后台运行的优先级高的应用进程的正常运行,现有技术提出针对进程进行内存回收的方法,首先获取目标进程的物理页,之后查找未被目标进程使用的目标物理页并回收目标物理页。但是在现有的对进程进行内存回收的方法中,其回收的目标物理页仅仅针对未被目标进程使用的目标物理页,目标物理页主要是目标进程在INACTIVE_ANON和INACTIVE_FILE这两个链表中的物理页,也就是非活动状态的物理页,这种方法的内存回收效率很低。
此外,一旦应用程序被冻结,所占用的内存资源将难以得到回收,导致被冻结的应用程序占用大量的内存资源而无法被回收,影响终端设备的运行。
发明内容
本发明的第一目的是提供一种减小被冻结的应用程序占用内存量的终端设备控制方法。
本发明的第二目的是提供一种可以有效回收终端设备内存终端设备控制装置。
本发明的第三目的是提供一种能够实现上述终端设备控制方法的终端设备。
本发明的第四目的是提供一种被处理器读取并执行时能够实现上述终端设备控制方法的计算机可读存储介质。
为了实现上述的第一目的,本发明提供的终端设备控制方法包括判断目标应用程序是否满足冻结条件,如是,获取目标应用程序正在运行的目标进程,执行对目标进程的内存回收操作,执行内存回收操作后,对目标应用程序执行冻结操作。
由上述方案可见,在目标应用程序执行冻结操作前,首先对目标应用程序执行一次内存回收的操作,即目标应用程序的正在运行的目标进程执行内存回收操作,从而充分回收目标应用程序所占用的内存。这样,在目标应用程序被冻结后,确保目标应用程序占用较少的内存,也就是确保目标应用程序被冻结前充分释放可回收的内存。
一个优选的方案是,确定目标应用程序满足冻结条件包括:判断目标应用程序置于后台运行的时间长度是否大于预设时间长度,如是,确定目标应用程序满足冻结条件。
由此可见,当目标应用程序置于后台时间较长时,对目标应用程序执行冻结操作,可以尽快释放目标应用程序所占用的终端设备的资源,有利于提高终端设备的运行效率。
可选的方案是,确定目标应用程序满足冻结条件包括:判断是否获取到预设的对目标应用程序进行冻结的操作指令,如是,确定目标应用程序满足冻结条件。
可见,用户可以主动发出对应用程序执行冻结的操作,从而将不需要使用的应用程序执行冻结操作,释放终端设备的资源。
进一步的方案是,对目标进程进行内存回收操作包括:获取目标进程对应的目标物理页;读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关;若目标物理页的活跃度的值高于回收标准,且活跃度的值高于回收标准的物理页处于活动状态,则降低目标物理页的活跃度;再次读取目标物理页的活跃度的值;若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
由上述方案可见,在获取目标进程对应的目标物理页之后,若目标物理页的活跃度的值高于回收标准,可以降低目标物理页的活跃度,并在目标物理页的活跃度不高于回收标准时,对目标物理页进行回收。这样,即使目标物理页为活动状态的物理页,本发明也有机会对目标物理页进行回收,相比于现有技术,本发明大大扩展了内存回收的对象,提高了内存回收效率。
进一步的方案是,对目标应用程序执行冻结操作包括:隔离目标应用程序所占用的系统资源,并在系统框架中隔离目标应用程序,向目标应用程序的进程组发送冻结信号。
进一步的,在降低目标物理页的活跃度之后,在读取目标物理页的活跃度的值之前,开启计时器;当计时器记录的时长达到预设时长时,触发读取目标物理页的活跃度的值的步骤。
进一步的,开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关;或者,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
进一步的,活跃度的可选值至少包括第一值、第二值和第三值,第一值不高于回收标准,第二值低于第三值,且高于回收标准。
进一步的,降低目标物理页的活跃度包括:当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。
进一步的,降低目标物理页的活跃度包括:当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;第一幅度低于第二幅度。
为实现上述的第二目的,本发明提供的终端设备控制装置包括:冻结条件判断模块,用于判断目标应用程序是否满足冻结条件;获取模块,用于在确定目标应用程序满足冻结条件时,获取目标应用程序正在运行的目标进程;内存回收模块,用于执行对目标进程的内存回收操作;冻结模块,用于对目标应用程序执行冻结操作。
优选的,冻结条件判断模块具体用于:判断目标应用程序置于后台运行的时间长度是否大于预设时间长度,如是,确定目标应用程序满足冻结条件。
进一步的,内存回收模块包括:获取模块,用于获取目标进程对应的目标物理页;第一读取模块,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关;降低模块,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态;第二读取模块,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值;回收模块,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
进一步的,内存回收模块还包括第一设置模块,用于在计时模块开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关;或者,第二设置模块,用于在计时模块开启计时器之前,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
进一步的,活跃度的可选值至少包括第一值、第二值和第三值,第一值不高于回收标准,第二值低于第三值,且高于回收标准。
进一步的,降低模块包括:设置单元,用于当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。
进一步的,降低模块包括:降低单元,用于当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;第一幅度低于第二幅度。
为实现上述的第三目的,本发明提供的终端设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现上述终端设备控制方法的各个步骤。
为实现上述的第四目的,本发明提供的计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述终端设备控制方法的各个步骤。
附图说明
图1是本发明终端设备控制方法实施例的流程图。
图2是本发明终端设备控制方法实施例中判断满足冻结条件第一实施方式的流程图。
图3是本发明终端设备控制方法实施例中判断满足冻结条件第二实施方式的流程图。
图4是本发明终端设备控制方法实施例中的对目标应用程序的目标进程内存回收的第一种方式的流程图。
图5是本发明终端设备控制方法实施例中的对目标应用程序的目标进程内存回收的第二种方式的流程图。
图6是本发明终端设备控制方法实施例中的对目标应用程序的目标进程内存回收的第三种方式的流程图。
图7是本发明终端设备控制方法实施例中的对目标应用程序的目标进程内存回收的第四种方式的流程图。
图8是本发明终端设备控制装置实施例的结构框图。
图9是本发明终端设备控制装置实施例的内存回收模块一种方式的结构框图。
图10是本发明终端设备控制装置实施例的内存回收模块另一种方式的结构框图。
图11是本发明终端设备实施例的结构框图。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明终端设备控制方法是应用在诸如智能手机或者平板电脑等终端设备上,用于实现在目标应用程序被冻结前对目标应用程序所占用的内存的回收。本发发明的内存回收装置运行在终端设备上,并且用于实现上述的终端设备控制方法。
由于用户在使用应用程序的过程中,经常会频繁更换所使用的应用程序,例如利用视频播放软件观看视频的过程中,可能需要频繁的将聊天应用切换到前台,为了减少用户的等待时长,操作系统通常会为转入后台的应用进程保留其占用的内存。但是,当后台运行的应用程序过多,终端设备的内存被大量占用而得不到释放时,会因为内存分配不足导致操作系统运行出现异常。
另外,如果应用程序长时间在后台运行,也会占用终端设备的资源,如占用CPU资源、内存资源等,因此,需要对长时间置于后台的应用程序进行冻结。
参见图1,本发明的终端设备控制方法包括以下步骤:
步骤S101,判断目标应用程序是否满足冻结条件,如是,转入步骤S102。
操作系统通常记录当前正在运行的应用程序的信息,并且记录每一个应用程序当前的状态,终端设备可以获取未被冻结的目标应用程序,优选的,目标应用程序是一个正在运行的应用程序,更优选的,目标应用程序可以是置于后台运行的应用程序。
获取目标应用程序后,判断目标应用程序是否满足冻结条件。应用程序的冻结条件是预先设定的,例如,系统预先设定满足特定的条件下对应用程序进行冻结。或者,冻结条件可以由用户自行设定,例如在终端设备的设置页面中设置对应用程序的冻结条件。因此,步骤S101中,只需要判断目标应用程序是否满足预先设定的冻结条件。判断目标应用程序是否满足预设的冻结条件的流程在下文将详细论述。
步骤S102,获取目标应用程序正在运行的目标进程。
如步骤S101中,确定目标应用程序满足冻结条件,则获取目标应用程序的进程列表,从进程列表中获取目标应用程序当前正在运行的所有进程,并且将目标应用程序的正在运行进程确定为目标进程,一种情况是,目标应用程序的正在运行的所有进程都是被确定的目标进程。
当然,如果存在多个应用程序共用一个或者多个进程的情况,需要判断共用的进程能否被执行内存回收的操作。例如,某一共享进程也是另一个应用程序所使用的进程,但另一个应用程序是不可以被执行内存回收操作的应用程序,则不能将该进程确定为目标进程。一个可选的方案是,仅仅将应用程序中非共享进程确定为目标进程。例如,通过操作系统的Activity Manager可以获取目标应用程序所有的进程识别号PID,如果目标应用程序所有的进程都不是共享进程,则所有的进程都是目标进程。
步骤S103,对目标进程执行内存回收操作。
在获取目标进程后,对每一目标进程进行一次内存回收的操作,从而回收每一目标进程所占用的内存资源,这样,可以确保将每一进程所占用的内存资源充分释放。
通常,终端设备的物理内存通常被划分成若干份,每一份被记录为一个物理页。一个应用进程通常占用多个物理页,操作系统回收应用进程占用的内存,实际上是对应用进程占用的多个物理页进行回收。关于内存回收,操作系统需要在保证应用的数据不丢失的前提下做回收动作。页面回收的方式一般有页回写、页交换和页丢弃三种方式。
现有很多对进程进行内存回收操作的方法,最常见的方法就是对进程中非活跃物理页进行内存回收,即识别出目标进程对应的物理页后,获取物理页的活跃度的值,对非活跃物理页直接执行回收操作。对物理页的回收操作有很多种方法,在此不做限定。
步骤S104,对目标应用程序执行冻结操作。
在完成对目标应用程序的目标进程的内存回收操作后,执行对目标应用程序的冻结操作。例如,隔离目标应用程序所占用的系统资源,并在系统框架中隔离目标应用程序,向目标应用程序的进程组发送冻结信号等。
对目标应用程序进行冻结,是为了避免置于后台的应用程序继续占用系统资源,因此需要隔离目标应用所占用的系统资源,系统资源包括目标应用程序在冻结时无法被释放的资源,如唤醒锁资源、GPS资源以及传感器(sensor)资源。在本发明的一个实施例中,隔离指的是将目标应用所占用的系统资源进行释放,或者断开目标应用程序与系统资源的连接。例如,目标应用程序为一个通信应用程序,用户在使用该通信应用程序时,通过该通信应用程序调度了系统的GPS资源,若不对该通信应用程序进行GPS资源的释放,那么该通信应用程序置于后台时,仍然会占用GPS资源,由于使用GPS资源需要进行实时变更,所以终端设备的处理器会一直处于高速运转状态,所消耗的电量也比较多,所以需要先隔离该通信应用程序所占用的GPS资源,即释放该通信应用程序所占用的GPS资源。可以理解,隔离的系统资源为后续无需冻结的系统资源。
终端设备的系统框架用于对所有的应用程序进行管理,应用程序的进程直接体现在系统框架中。若对目标应用程序进行冻结后,并未将目标应用程序从系统框架中隔离开,系统可能会继续发送广播信息到目标应用程序,而目标应用程序的进程已经被冻结,则导致目标应用程序不会产生响应给系统,系统则可能会关闭目标应用程序中没有响应的进程,就会造成当重新加载该应用时,一些进程无法进行加载,使得目标应用程序出现异常。
所以,当需要冻结目标应用程序时,则需要在系统框架中隔离目标应用程序,在框架中隔离目标应用程序,在本发明一个实施例中,是过滤目标应用程序在系统框架中的数据交互。例如,在Android系统中,具体的隔离方式包括:释放服务器连接(serviceunbinding)、删除还未发给目标应用程序的广播、将目标应用程序从唤醒类型变更为非唤醒类型、隔离其它应用和目标应用程序的service交互和provider交互,以及各种监听器交互等。可以理解,全部的或部分的隔离都可以叫做隔离。
向目标应用程序的进程组发送冻结信号,使得目标应用程序进行冻结时,可以通过在系统框架层遍历目标应用程序的进程组,并对进程组发送冻结信号,例如,该系统为Android系统,那么系统的底层为Linux系统,则冻结信号可以为SIGSTOP信号,冻结信号在底层发送时,还要考虑到进程组中具体某个进程PID所对应的子进程组,即要对该应用的所有的进程树发送该冻结信号。当该应用的进程组均收到冻结信号时,则该应用的所有进程都不会再运行,此时,该应用则处于冻结状态。
下面结合图2介绍判断目标应用程序是否满足冻结条件的流程。
步骤S201,判断目标应用程序是否置于后台运行,如是,执行步骤S202。
由于用户在通过终端设备使用某一应用程序时,在当前时刻,在终端设备的前台一般只运行有一个应用程序,当用户不再使用该应用程序或需要使用另一应用程序时,则用户可以关闭该应用程序,为了方便对应用程序的快速加载,终端设备都具有将应用程序置于后台的功能,即用户可以不用关闭该应用,而是将该应用程序置于终端设备的后台。这样,当用户重新使用该应用程序时,只需通过从终端设备的后台调度出该应用程序即可,这样,该应用程序则无需重新打开运行,节省了应用加载的时间。
因此,步骤S201中,通过读取目标应用程序的状态来判断目标应用程序当前是否置于后台运行。
步骤S202,判断目标应用程序置于后台运行的时间长度是否大于预设的时间长度,如是,执行步骤S203。
在步骤S201中,如确定目标应用程序当前置于后台运行,则进一步的判断目标应用程序置于后台运行的时间长度。由于每一目标应用程序被置于后台运行时都记录置于后台运行的时间,或者说,每一应用程序被置于后台运行后即开启计时器,计算被置于后台运行的时间长度。
同时,操作系统设置应用程序被置于后台运行的预设时间长度,该预设时间长度作为判断目标应用程序是否需要被冻结的判断依据。预设时间长度可以是系统默认设置的时间长度,例如一分钟或者三分钟。当然,用户也可以根据需要自行设定预设时间长度。优选的,系统或者用户根据不同应用程序设置不同的预设时间长度。例如,对于使用较为频繁的应用程序,如微信、QQ等应用程序,设置的预设时间长度可以是较长的时间长度,如三分钟,对于使用频率较低的应用程序,设置的预设时间长度可以是较短的预设时间长度,如一分钟。
步骤S203,确定目标应用程序满足冻结条件。
在步骤S202中,如果确定目标应用程序置于后台运行的时间长度大于预设时间长度,如置于后台运行的时间长度超过一分钟或者三分钟,则确定目标应用程序满足冻结条件,执行步骤S102的操作。
当然,如果目标应用程序置于后台运行的时间长度未到达预设的时间长度,则确定目标应用程序未满足冻结条件,此时,继续等待目标应用程序置于后台运行的时间。如果目标应用程序置于后台运行的时间长度未到达预设时间长度,此时用户重新加载目标应用程序,即目标应用程序重新置于前台运行,则终止计时,等待目标应用程序下一次置于后台运行。
图2所介绍的流程是被动的对目标应用程序进行冻结操作,实际应用时,还可以通过主动对目标应用程序进行冻结操作,下面结合图3介绍判断目标应用程序是否满足冻结条件的另一种方法的流程。
步骤S301,获取预设的冻结操作指令。
操作系统可以预先设置若干操作指令用于表示用户发出冻结目标应用程序,例如,用户进入任务管理器后,点击某一应用程序的图标并且在触摸屏上滑动形成预设的滑动轨迹,又或者,进入任务管理器后,选择某一应用程序,并且在应用程序上显示一个冻结的虚拟按键,当用户点击该虚拟按键时,表示用户发出对目标应用程序进行冻结的指令。
因此,步骤S301是判断用户是否发出了预设的操作指令,该操作指令表示用户需要对目标应用程序进行冻结操作。
步骤S302,确定目标应用程序满足冻结条件。
如步骤S301中,确定用户发出了预设的操作指令,则确定用户发出对目标应用程序执行冻结的指令,也就是确定目标应用程序满足冻结条件,执行步骤S102。
当然,判断目标应用程序是否满足冻结条件,并不限于上述两种方式,还可以有其他判断条件,例如,当终端设备进入锁屏状态后预设时间长度,如进入锁屏状态后三分钟,确定终端设备当前正在运行的应用程序满足冻结条件。当然,如果操作系统或者用户设置了某些应用程序禁止被冻结,则对该应用程序不使用冻结操作,也就是该应用程序永远不满足被冻结的条件。
本发明是在目标应用程序被冻结前,对目标应用程序的目标进程执行一次内存回收的操作,以尽可能回收目标应用程序所占用的内存资源,避免被冻结的应用程序长时间占用内存资源。
对目标进程的内存回收主要是通过对物理页面进行回收,虽然使用页面回收方式可以将应用程序所占用的内存释放,从而可以避免内存分配不足的情况。但是这会增加系统磁盘读写的次数,并且,重新加载会增加用户的等待时长,降低用户体验。因此,操作系统通常会优先对价值较低的物理页存储数据进行回收,释放相应的内存,以保证内存供应的情况下,尽量减少系统磁盘读写的次数以及用户的等待时长。
判断物理页存储数据的价值高低可以有很多角度,现有技术通常以物理页的活跃程度(或称活跃度)高低来评价物理页存储数据的价值高低,物理页的活跃度越高,系统通常认为该物理页存储数据的价值越高。为了比较物理页的活跃度,现有技术引入近期最少使用链表LRU,是按照近期的使用情况排列的,最少使用的存在链表末尾。INACTIVE_ANON、ACTIVE_ANON、INACTIVE_FILE和ACTIVE_FILE这4个链表中的物理页是可以回收的,ANON代表匿名映射,FILE代表文件映射,INACTIVE代表处于非活动状态,ACTIVE代表处于活动状态,ACTIVE链表中的物理页的活跃度高于INACTIVE链表中的物理页,也就是说,处于活动状态的物理页,它的活跃度高于处于非活动状态的物理页。当内存不足时,系统会优先对LRU中的INACTIVE_ANON和INACTIVE_FILE这两个链表中的物理页进行回收,当进程需要使用回收的物理页上的内容时,需要从磁盘中加载相应内容。
但是,前台运行的应用进程或者后台运行的优先级高的应用进程,其占用的物理页也可能处于INACTIVE_ANON和INACTIVE_FILE这两个链表中,对这两个链表中前台进程和后台优先级高的进程对应的物理页进行回收,会更大程度的增加系统磁盘读写的次数,并且,增加用户的等待时长,降低用户体验。
可见,应用进程也应作为评价物理页价值高低的一个权重。为此,现有技术提出针对进程进行内存回收的方法,首先选定作为内存回收对象的目标进程,并获取目标进程的物理页,之后查找未被目标进程使用的目标物理页并回收目标物理页,未被目标进程使用的目标物理页主要指处于非活动状态的物理页。
在实际场景测试中,对于一个退到后台一分钟的进程,对其占用的所有物理页进行回收,其中,该进程在INACTIVE_ANON和INACTIVE_FILE链表中的物理页只占用到所有物理页比例的5%,而大部分物理页是该进程在ACTIVE_ANON和ACTIVE_FILE链表中的物理页。可见,现有的针对进程进行内存回收的方法回收效率很低。
为了提高回收效率,需要对ACTIVE_ANON和ACTIVE_FILE链表中的物理页进行选择性回收,优选的,便是回收其中价值较低的物理页,或者说,活跃度较低的物理页。因此,本实施例针对目标应用程序进行内存回收时,采用如下的方法执行。参见图4,针对目标应用程序内存回收的第一种方式包括以下步骤:
步骤S401,获取目标进程对应的目标物理页。
获取第一进程对应的物理页的方式可以根据进程识别号PID,找到进程的虚拟内存空间VMA,遍历VMA可以找到进程对应的物理页,还可以通过其他方式查找进程对应的物理页,此处不做具体限定。目标物理页可以为目标进程对应的全部物理页,也可以为目标进程对应的部分物理页。对目标进程的回收可以通过串行方式进行,也就是说每次回收只选择一个物理页作为目标物理页,执行本发明的回收流程,或者也可以通过并行方式进行,也就是说同时选择多个物理页作为目标物理页,对多个物理页同时执行本发明的回收流程。
步骤S402,读取目标物理页的活跃度的值。
获取目标进程对应的目标物理页之后,可以读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关,也就是说,物理页的活动程度越高,则其活跃度的值越大。并且,物理页的活跃度的可选值应不少于两个。
需要说明的是,活跃度的值可以为数值,此时可以按照数值大小确定活跃度的值的大小,但是,活跃度的值不应仅限为数值,只要根据预设的比较标准能够判定不同值的高低即可。
步骤S403,若目标物理页的活跃度的值高于回收标准,则降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态。
读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,回收标准可以视为是活动状态的物理页的活跃度和非活动状态的物理页的活跃度之间边界值。若判定目标物理页的活跃度的值高于回收标准,则可以降低目标物理页的活跃度,若判定目标物理页的活跃度的值不高于回收标准,则可以执行其他操作,比如回收目标物理页。
步骤S404,再次读取目标物理页的活跃度的值。
在步骤S403之后,可以读取目标物理页的活跃度的值。若在步骤S404之前,在步骤S403中所读取的目标物理页被访问,则该目标物理页的活跃度的值会增加。如果在步骤S404之前,在步骤S403中所读取的目标物理页没有被访问,则目标物理页的活跃度的值将维持步骤S403操作后,即被降低活跃度之后的值。
步骤S405,若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
再次读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。若目标物理页的活跃度的值不高于回收标准时,表明目标物理页处于非活动状态,现有技术有很多对非活动状态的物理页进行回收的方法,因此本实施例不再赘述对非活动状态的物理页的回收方法。
第一种内存回收方式中,如果步骤S403和步骤S404之间的时间间隔极短,极限情况下,可以理解成步骤S403降低目标物理页的活跃度之后,直接执行步骤S404读取目标物理页的活跃度的值,若活跃度的可选值只有两个,这样,几乎所有目标进程对应的处于活动状态的物理页均被回收,相当于系统自动关闭目标进程,增加用户等待时长。因此,需要在第一实施例中增加反悔机制,比如在步骤S403和步骤S404之间设定适当的时间间隔,作为反悔时长,在设定的时间间隔内若目标物理页被访问,则其活跃度的值升高,降低被回收的可能性,有利于防止活跃度较高的物理页被回收。基于这种思路,本发明对目标应用程序内存回收方法第二种方式的流程图如图5所示。
步骤S501,获取目标进程对应的目标物理页。
步骤S502,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
反悔时长也可以称作预设时长,可以是系统默认的固定时长,优选的,在确定针对目标进程进行回收之后,可以读取目标进程优先级,并根据目标进程的优先级设置预设时长,以使得预设时长与目标进程的优先级正相关,也就是说,优先级越高的进程,为其设置的预设时长越长。
或者,也可以根据内存占用率设置预设时长,预设时长与内存占用率负相关,也就是说,内存占用率越高,则预设时长越短,回收效率越高,以尽快回收更多内存。
步骤S503,读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
步骤S504,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S505,若否,则执行步骤S507。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S505,若否,则执行步骤S507。
步骤S505,降低目标物理页的活跃度。
若判定目标物理页的活跃度的值高于回收标准,则可以降低目标物理页的活跃度。
步骤S506,开启计时器。
降低目标物理页的活跃度之后,可以开启计时器,记录时长。当计时器记录的时长达到预设时长时,重复执行步骤S503至步骤S504可以只重复一次,也就是说,若第一次重复执行步骤S504时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S505,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S503至步骤S504重复执行两次或两次以上。
重复次数可以预设为某个有限数值,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,本实施例对此不做限定。
需要说明的是,步骤S502在本发明实施例中的执行顺序并不限于上述描述的顺序,由于预设时长用于步骤S506,因此,只要在步骤S506之前执行即可,具体时序不做限定。
步骤S507,回收目标物理页。
若步骤S508判定目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
本发明所设置的反悔机制,除了如第二种实施方法中,通过设定适当的时间间隔,作为反悔时长,以尽量防止活跃度较高的物理页被回收,还可以对高于回收标准的活跃度设置两个或两个以上可选的值,这样,活跃度更高的物理页在回收尝试中更不容易被回收。因此,本发明对目标应用程序进行内存回收方法第三种实施方式的流程如图6所示。
步骤S601,设置物理页活跃度的可选值,包括第一值、第二值、第三值和第四值。
设置物理页活跃度的可选值,比如可以包括第一值、第二值、第三值和第四值,其中,第一值不高于回收标准,第二值低于第三值,且高于回收标准,第三值低于第四值。或者可以说,各个可选值代表了物理页的活跃度的级数,值越高,活跃度的级数越高。
作为举例,可以通过设置标志位来评估物理页的活动程度,假设设置两个标志位,每个标志位的可选值为0和1,活跃度的值可以用(第一标志位数值,第二标志位数值)来代表,那么活跃度的可选值包括(0,0)、(0,1)、(1,0)和(1,1),并预设比较标准(0,0)低于(1,0)低于(0,1)低于(1,1),也就是说(0,0)、(1,0)、(0,1)、(1,1)逐级升高。
在实际使用中,也可以设置可选值的范围,而不具体设置各个值。
步骤S602,获取目标进程对应的目标物理页。
步骤S603,读取目标物理页的活跃度的值。
步骤S602至步骤S603分别与第一种实施方式中的步骤S401至步骤S402相同,此处不再赘述。
步骤S604,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S605,若否,则执行步骤S607。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S605,若否,则执行步骤S607。
步骤S605,按照第一幅度降低目标物理页的活跃度。
若判定目标物理页的活跃度的值高于回收标准,则可以按照第一幅度降低目标物理页的活跃度,在本发明实施例中,第一幅度可以为每次降低一级。
步骤S606,开启计时器。
可以设置有预设时长,作为反悔时长,关于预设时长的设置,请参阅第二种实施方式,本实施例中不再赘述。
当计时器记录的时长达到预设时长时,重复执行步骤S603至步骤S604。可以只重复一次,也就是说,若第一次重复执行步骤S604时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S605,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S603至步骤S604重复执行两次或两次以上。
重复次数可以预设,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,此处不做限定。
步骤S607,回收目标物理页。
若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
下面按照第三实施例提供的方法,以首次读取的活跃度的值的不同情况的进行举例说明,假设步骤S603至步骤S604的最大重复执行次数设置为3次:
一、假设在回收尝试的过程中,目标物理页未被访问,其活跃度的值未增加,那么:
若首次读取目标物理页的活跃度的值为第四值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第三值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第二值,之后第二次重复执行步骤S603至步骤S604,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第一值,之后第三次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第四值,那么该物理页至少需要三次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第三值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第二值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第一值,之后第二次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第三值,那么该物理页至少需要两次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第二值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第二值,那么该物理页至少需要一次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第一值,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第一值,那么该物理页不需要重复执行步骤S603至步骤S604就能被回收。
可见,执行本发明的回收步骤之前,活跃度的值越高的物理页,其越不容易被回收,也就是说,本发明能够优先回收活跃度较低的物理页,实现对活动状态的物理页的精细化分类回收。
二、假设在回收尝试的过程中,目标物理页被访问,则其活跃度的值会增加,那么和第一种情况相比,系统需要更多次的回收尝试才能对目标物理页进行回收。在实际应用中,系统通常对物理页进行有限次数的回收尝试,若在有限次数的回收尝试后,目标物理页的活跃度的值仍然高于回收标准,则表明目标物理页的活跃度很高,对于目标进程来说是价值更高的物理页,系统不会回收目标物理页,在进程运行效果与内存资源充足之间取得更加合理的平衡。
进一步的,目标进程需要进行回收尝试的活动物理页包括目标进程在ACTIVE_ANON链表中的物理页(即活动状态的匿名页)和ACTIVE_FILE链表中对应的物理页(即活动状态的文件页)。其中,匿名页的回收方式为页交换,回收耗时长,效率低;而文件页的回收方式为页丢弃或页回写,回收耗时短,效率高。可见,对活动状态的匿名页的回收代价更高,因此,和活动状态的匿名页相比,可以降低对活动状态的文件页的回收难度,提高文件页的回收几率,更多的对文件页进行回收,以提高对活动物理页的整体回收效率。
增加对活动状态的匿名页的回收难度,可以采用多种方法,比如,可以增加匿名页的反悔时长,比如可以减少活跃度的可选值,或者也可以增加对活跃度的降低幅度。这里,我们对第三种方式进行举例说明,若第三实施例用于匿名页的回收,那么请参见7,本发明对目标应用程序进行内存回收第四实施方式包括以下步骤:
步骤S701,设置物理页活跃度的可选值,包括第一值、第二值、第三值和第四值。
设置物理页活跃度的可选值,比如可以包括第一值、第二值、第三值和第四值,其中,第一值不高于回收标准,第二值低于第三值,且高于回收标准,第三值低于第四值。或者可以说,各个可选值代表了物理页的活跃度的级数,值越高,活跃度的级数越高。
作为举例,可以通过设置标志位来评估物理页的活动程度,假设设置两个标志位,每个标志位的可选值为0和1,活跃度的值可以用(第一标志位数值,第二标志位数值)来代表,那么活跃度的可选值包括(0,0)、(0,1)、(1,0)和(1,1),并预设比较标准(0,0)低于(1,0)低于(0,1)低于(1,1),也就是说(0,0)、(1,0)、(0,1)、(1,1)逐级升高。
步骤S702,获取目标进程对应的目标物理页。
步骤S703,读取目标物理页的活跃度的值。
步骤S702至步骤S703分别与第一实施例中的步骤S401至步骤S402相同,此处不再赘述。
步骤S704,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S705,若否,则执行步骤S707。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S705,若否,则执行步骤S707。
步骤S705,若目标物理页的类型为文件页,则按照第二幅度降低目标物理页的活跃度。
在获取目标进程对应的目标物理页之后,在降低目标物理页的活跃度之前,可以根据目标物理页的类型来设置其活跃度的降低幅度。当目标物理页为匿名页时,则按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,则按照第二幅度降低目标物理页的活跃度,并且第一幅度低于第二幅度。在第三实施例中,第一幅度为降低一级,可以作为当目标物理页为匿名页时的回收流程,此处不再赘述。本实施例中主要用于举例说明当目标物理页的类型为文件页时,对目标物理页的回收流程。由于第一幅度低于第二幅度,那么本实施例中第二幅度可以为每次降低两级。
步骤S706,开启计时器。
可以设置有预设时长,作为反悔时长,关于预设时长的设置,请参见第二实施例,本发明实施例中不再赘述。
当计时器记录的时长达到预设时长时,重复执行步骤S703至步骤S704。可以只重复一次,也就是说,若第一次重复执行步骤S703至步骤S704时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S705,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S703至步骤S704重复执行两次或两次以上。
重复次数可以预设,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,此处不做限定。
步骤S707,回收目标物理页。
若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
下面按照第四实施例提供的方法,以首次读取的活跃度的值的不同情况的进行举例说明,假设步骤S703至步骤S704的最大重复执行次数设置为3次:
一、假设在回收尝试的过程中,目标物理页未被访问,其活跃度的值未增加,那么:
若首次读取目标物理页的活跃度的值为第四值,那么执行步骤S705后,目标物理页的活跃度的值被设置为第二值,之后第一次重复执行步骤S703至步骤S704,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低两级,由于最低的级数为第一值,因此设置为第一值,之后第二次重复执行步骤S703至步骤S704,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第四值,那么该物理页至少需要两次重复执行步骤S703至步骤S704方能被回收。
若首次读取目标物理页的活跃度的值为第三值,那么执行步骤S705后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S703至步骤S704,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第三值,那么该物理页至少需要一次重复执行步骤S703至步骤S704方能被回收。
若首次读取目标物理页的活跃度的值为第二值,那么执行步骤S705后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S703至步骤S704,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第二值,那么该物理页至少需要一次重复执行步骤S703至步骤S704方能被回收。
若首次读取目标物理页的活跃度的值为第一值,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第一值,那么该物理页不需要重复执行步骤S703至步骤S704就能被回收。
可见,执行本发明的回收步骤之前,活跃度的值越高的物理页,其越不容易被回收,也就是说,本发明能够优先回收活跃度较低的物理页,实现对活动状态的物理页的精细化分类回收。
与第三实施方式相比,本实施方式通过增加活跃度的值的降低幅度,有利于减少步骤S703至步骤S704的重复执行次数,提高对活动状态的文件页的回收效率。
二、假设在回收尝试的过程中,目标物理页被访问,则其活跃度的值会增加,那么和第一种情况相比,系统需要更多次的回收尝试才能对目标物理页进行回收。在实际应用中,系统通常对物理页进行有限次数的回收尝试,若在有限次数的回收尝试后,目标物理页的活跃度的值仍然高于回收标准,则表明目标物理页的活跃度很高,对于目标进程来说是价值更高的物理页,系统不会回收目标物理页,在进程运行效果与内存资源充足之间取得更加合理的平衡。
通过第三实施例的方法和第四实施例的方法可以分别实现对目标进程的处于活动状态的匿名页和文件页的回收,如下表1,为按照第三实施例的方法和第四实施例的方法进行页面回收的一次实际场景测试。可以理解的是,表1中的测试数据仅为一次测试的结果,再次测试时,由于使用的终端不同、对应用程序的使用情况不同等,均会导致测试数据的变化,因此,表1的数据仅用于定性说明本发明对各应用的回收效果,而不用于定量限定本发明对各应用的回收效率。
应用名称 第一次回收率 第二次回收率 第三次回收率 第四次回收率 第五次回收率 累计进行三次回收的回收率 累计进行五次回收的回收率
豆瓣 2.64% 8.27% 26.73% 0.46% 0.08% 34.56% 35.00%
QQ 4.62% 33.02% 11.55% 1.90% -0.97% 43.49% 44.10%
微信 1.79% 12.15% 19.32% -0.04% 0.32% 30.39% 30.60%
今日头条 5.84% 16.98% 17.35% -0.33% -0.85% 35.39% 34.70%
QQ浏览器 11.72% 17.80% 6.53% 1.54% -1.94% 32.17% 32.00%
手机管家 4.87% 20.91% 17.58% -0.62% 0.72% 37.99% 38.10%
应用中心 24.46% 18.66% 11.40% 0.23% -2.54% 45.56% 44.40%
新浪微博 8.69% 25.51% 32.80% -0.52% -3.39% 54.29% 53.50%
表1
分别以豆瓣、QQ、微信、今日头条、QQ浏览器、手机管家、应用中心和新浪微博等应用作为目标应用,即测试对象,以目标应用中的进程作为目标进程,对目标进程进行页面回收,以实现对目标应用的内存回收。以豆瓣为例,在测试过程中,首先对豆瓣的目标进程的匿名页执行一次步骤S603至步骤S604或者对其文件页执行一次步骤S703至步骤S704,简称为对豆瓣进行第一次回收,根据回收测试前豆瓣占用的内存大小和第一次回收后豆瓣占用的内存大小,可以计算得到对豆瓣的第一次回收率,为2.64%;之后对豆瓣的目标进程的匿名页第二次执行步骤S603至步骤S604、或者对其文件页第二次执行步骤S703至步骤S704,简称为对豆瓣进行第二次回收,根据第一次回收后豆瓣占用的内存大小和第二次回收后豆瓣占用的内存大小,可以计算得到对豆瓣的第二次回收率,为8.27%;依此类推,可以得到对豆瓣的第三次回收率为26.73%、对豆瓣的第四次回收率为0.46%、对豆瓣的第五次回收率为0.08%。
观察表1中同一应用不同次回收的回收率,可以看出,各应用在前三次的回收率均远远大于第四次和第五次的回收率,并且,累计进行三次回收的回收率(根据第三次回收后应用占用的内存大小和回收测试前应用占用的内存大小计算得到)和累计进行五次回收的回收率相差不大,说明回收次数过多,回收效率不高,且浪费资源,因此优选的是对应用进行有限次数的页面回收。
另外,现有的针对进程进行回收的方法,只对非活动状态的物理页进行回收,回收率对应于表1中的第一次回收率,通过比较表1中同一应用的第一次回收率和累计进行三次回收的回收率,可以发现,后者是前者的数倍,倍数在2倍至17倍之间,可见,和现有技术相比,本发明实现了更高的回收率,对于缓解系统内存压力具有明显效果。
综上所述,本发明提供的针对进程进行内存回收的方法,并且能够对活动状态的物理页进行选择性回收,极大的提高了内存回收的效率。并且,本发明运行用户自行选择需要执行内存回收的应用程序,而不是由操作系统自行选择哪些应用程序执行内存回收的操作。这样,用户可以根据使用的实际情况选择在后续一段时间内不需要频繁使用的应用程序执行内存回收操作,从而回收一部分应用程序所占用的内存资源。
由于本发明的能够在对目标应用程序执行冻结前,对目标应用程序执行一次内存回收的操作,从而确保被冻结的应用程序不会占用大量的内存,有利于终端设备充分内存资源。
上面对本发明实施例中的终端设备控制方法进行了描述,下面对本发明实施例中的终端设备控制置进行描述。
参见图8,本发明的终端设备控制装置包括:
冻结条件判断模块801,用于判断目标应用程序是否满足冻结条件。本实施例中,冻结条件可以是目标应用程序置于后台运行超过预定的时间长度,或者终端设备进入锁屏状态到达预定的时间长度,或者用户发出了预设的操作指令,让目标应用程序进入冻结状态。
第一获取模块802,用于在确定目标应用程序满足冻结条件时,获取目标应用程序正在运行的目标进程,如从进程列表中获取目标应用程序当前正在运行的所有进程,一种情况是,将目标应用程序的正在运行进程确定为目标进程。
内存回收模块803,用于执行对目标进程的内存回收操作,内存回收模块的具体框架如图9与图10所示。
冻结模块804,用于对目标应用程序执行冻结操作,例如,隔离目标应用程序所占用的系统资源,并在系统框架中隔离目标应用程序,向目标应用程序的进程组发送冻结信号。
优选的,冻结条件判断模块801可以判断目标应用程序置于后台运行的时间长度是否大于预设时间长度,如是,确定目标应用程序满足冻结条件。或者,判断是否获取到预设的对目标应用程序进行冻结的操作指令,如是,确定目标应用程序满足冻结条件。
内存回收模块803用于对目标应用程序进行回收,参见图9,本发明实施例中内存回收模块803的第一实施例包括:
第二获取模块901,用于获取目标进程对应的目标物理页。
第一读取模块902,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
降低模块903,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,并且,活跃度的值高于回收标准的物理页处于活动状态。
第二读取模块904,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值。
回收模块905,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
请参见图10,本发明实施例中内存回收模块803第二实施例包括:
第三获取模块1001,用于获取目标进程对应的目标物理页。
第一读取模块1002,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
降低模块1003,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态。
优选的,降低模块1003包括有设置单元1004以及降低单元1005,其中,设置单元1004用于当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。降低单元1005用于当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;并且,第一幅度低于第二幅度。
第二设置模块1006,用于在计时模块1007开启计时器之前,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
计时模块1007,用于在降低目标物理页的活跃度之后,在读取目标物理页的活跃度的值之前,开启计时器。
第二读取模块1008,用于在降低模块降低目标物理页的活跃度之后,读取目标物理页的活跃度的值。
回收模块1009,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
在实际使用中,也可以不采用第二设置模块,而是采用第一设置模块,第一设置模块用于在计时模块开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关。
本发明实施例还提供了一种终端,如图11所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)等任意终端设备。
参考图11,终端设备包括:电源1103、存储器1102、处理器1101以及存储在存储器中并可在处理器上运行的计算机程序。其中,处理器1101执行计算机程序时实现上述各个信息处理方法实施例中的步骤,例如图1所示的步骤S101至S104等。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行,以完成本发明。上述的一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
本领域技术人员可以理解,图11中示出的结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,例如上述的终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMedia Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
当然,上述的方案只是本发明优选的实施方案,实际应用是还可以有更多的变化,例如,待处理信息的设置方式改变、对待处理信息的不可见方式的改变,这样的改变并不影响本发明的实施,也应该包括在本发明的保护范围内。

Claims (9)

1.一种终端设备控制方法,其特征在于,该方法包括:
判断目标应用程序是否满足冻结条件,如是,获取所述目标应用程序正在运行的目标进程;
执行对所述目标进程的内存回收操作;
对所述目标应用程序执行冻结操作;
执行对所述目标进程的内存回收操作包括:
获取所述目标进程对应的目标物理页;
读取所述目标物理页的活跃度的值,所述目标物理页的活跃度用于标记所述目标物理页的活动程度,所述目标物理页的活跃度的值与所述目标物理页的活动程度正相关;
若所述目标物理页的活跃度的值高于回收标准,且活跃度的值高于所述回收标准的物理页处于活动状态,则降低所述目标物理页的活跃度;
再次读取所述目标物理页的活跃度的值;
若所述目标物理页的活跃度的值不高于所述回收标准,则回收所述目标物理页。
2.根据权利要求1所述的终端设备控制方法,其特征在于,确定所述目标应用程序满足冻结条件包括:
判断所述目标应用程序置于后台运行的时间长度是否大于预设时间长度,如是,确定所述目标应用程序满足冻结条件。
3.根据权利要求1所述的终端设备控制方法,其特征在于,确定所述目标应用程序满足冻结条件包括:判断是否获取到预设的对目标应用程序进行冻结的操作指令,如是,确定所述目标应用程序满足冻结条件。
4.根据权利要求1至3任一项所述的终端设备控制方法,其特征在于,对所述目标应用程序执行冻结操作包括:
隔离所述目标应用程序所占用的系统资源,并在系统框架中隔离所述目标应用程序,向所述目标应用程序的进程组发送冻结信号。
5.一种终端设备控制装置,其特征在于,该装置包括:
冻结条件判断模块,用于判断目标应用程序是否满足冻结条件;
获取模块,用于在确定所述目标应用程序满足冻结条件时,获取所述目标应用程序正在运行的目标进程;
内存回收模块,用于执行对所述目标进程的内存回收操作;
冻结模块,用于对所述目标应用程序执行冻结操作;
所述内存回收模块包括:
获取模块,用于获取所述目标进程对应的目标物理页;
第一读取模块,用于读取所述目标物理页的活跃度的值,所述目标物理页的活跃度用于标记所述目标物理页的活动程度,所述目标物理页的活跃度的值与所述目标物理页的活动程度正相关;
降低模块,用于当所述目标物理页的活跃度的值高于回收标准,且活跃度的值高于所述回收标准的物理页处于活动状态时,降低所述目标物理页的活跃度;
第二读取模块,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值;
回收模块,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
6.根据权利要求5所述的终端设备控制装置,其特征在于,所述冻结条件判断模块具体用于:判断所述目标应用程序置于后台运行的时间长度是否大于预设时间长度,如是,确定所述目标应用程序满足冻结条件。
7.根据权利要求5所述的终端设备控制装置,其特征在于,所述冻结条件判断模块具体用于:判断是否获取到预设的对目标应用程序进行冻结的操作指令,如是,确定所述目标应用程序满足冻结条件。
8.一种终端设备,其特征在于,所述终端设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至4中任意一项所述终端设备控制方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至4中任意一项所述终端设备控制方法的步骤。
CN201710670011.4A 2017-08-08 2017-08-08 终端设备控制方法及装置、终端设备及计算机可读存储介质 Active CN108287760B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710670011.4A CN108287760B (zh) 2017-08-08 2017-08-08 终端设备控制方法及装置、终端设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710670011.4A CN108287760B (zh) 2017-08-08 2017-08-08 终端设备控制方法及装置、终端设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN108287760A CN108287760A (zh) 2018-07-17
CN108287760B true CN108287760B (zh) 2021-02-19

Family

ID=62831356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710670011.4A Active CN108287760B (zh) 2017-08-08 2017-08-08 终端设备控制方法及装置、终端设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN108287760B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753350B (zh) * 2018-12-29 2021-01-08 维沃移动通信有限公司 一种资源管理方法及终端设备
CN112445586A (zh) * 2019-08-29 2021-03-05 中兴通讯股份有限公司 应用管理方法、装置、终端和可读存储介质
CN114518905A (zh) * 2022-01-21 2022-05-20 珠海全志科技股份有限公司 一种应用冷启动的方法、装置、计算机设备和存储介质
CN115525404B (zh) * 2022-02-22 2023-09-19 荣耀终端有限公司 释放内存的方法、设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012168751A (ja) * 2011-02-15 2012-09-06 Panasonic Corp メモリ管理装置、メモリ管理方法、およびプログラム
CN105159777A (zh) * 2015-08-03 2015-12-16 中科创达软件股份有限公司 进程的内存回收方法及装置
CN105975348A (zh) * 2016-05-31 2016-09-28 宇龙计算机通信科技(深圳)有限公司 一种内存优化方法、优化装置以及终端
CN106250223A (zh) * 2016-07-28 2016-12-21 宇龙计算机通信科技(深圳)有限公司 一种后台进程管理方法及终端设备
CN106484472A (zh) * 2016-09-29 2017-03-08 华为技术有限公司 一种内存回收方法及终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012168751A (ja) * 2011-02-15 2012-09-06 Panasonic Corp メモリ管理装置、メモリ管理方法、およびプログラム
CN105159777A (zh) * 2015-08-03 2015-12-16 中科创达软件股份有限公司 进程的内存回收方法及装置
CN105975348A (zh) * 2016-05-31 2016-09-28 宇龙计算机通信科技(深圳)有限公司 一种内存优化方法、优化装置以及终端
CN106250223A (zh) * 2016-07-28 2016-12-21 宇龙计算机通信科技(深圳)有限公司 一种后台进程管理方法及终端设备
CN106484472A (zh) * 2016-09-29 2017-03-08 华为技术有限公司 一种内存回收方法及终端

Also Published As

Publication number Publication date
CN108287760A (zh) 2018-07-17

Similar Documents

Publication Publication Date Title
CN108228341B (zh) 内存回收方法及装置、终端设备及计算机可读存储介质
CN108228449B (zh) 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN108287760B (zh) 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN108205498B (zh) 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108205471B (zh) 内存回收方法及装置、计算机装置及计算机可读存储介质
US10810127B2 (en) Solid-state hard disk and data access method for use with solid-state hard disk
CN108205501B (zh) 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108776614B (zh) 存储块的回收方法和装置
US10437519B2 (en) Method and mobile terminal for processing write request
CN109992523B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN111324303B (zh) Ssd垃圾回收方法、装置、计算机设备及存储介质
CN109992402B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN108205474B (zh) 内存管理方法、终端设备、计算机装置以及可读存储介质
CN111159436A (zh) 一种推荐多媒体内容的方法、装置及计算设备
CN108228339B (zh) 一种内存回收方法及装置、终端设备及计算机可读存储介质
CN113392037B (zh) 内存回收方法、装置、计算机设备和存储介质
CN109491606B (zh) 一种全闪存储空间管理方法、系统、设备及计算机介质
CN108228340B (zh) 终端控制方法及装置、终端设备及计算机可读存储介质
CN110554837A (zh) 易疲劳存储介质的智能交换
CN108228342B (zh) 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN110727607A (zh) 内存回收方法、装置以及电子设备
CN108287761B (zh) 内存回收方法及装置、终端设备及计算机可读存储介质
CN111984413A (zh) 内存回收方法、装置、电子设备及存储介质
CN108228472B (zh) 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN112199042B (zh) 存储空间管理方法、装置、芯片、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240624

Address after: 430000, 14th floor, No. 181 Chunxiao Road, Wuhan Economic and Technological Development Zone, Hubei Province

Patentee after: Wuhan Xingji Meizu Technology Co.,Ltd.

Country or region after: China

Address before: 519080 Meizu Science and Technology Building, Zhuhai City, Guangdong Province

Patentee before: MEIZU TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right