CN103631661B - 一种内存管理方法和装置 - Google Patents
一种内存管理方法和装置 Download PDFInfo
- Publication number
- CN103631661B CN103631661B CN201310617848.4A CN201310617848A CN103631661B CN 103631661 B CN103631661 B CN 103631661B CN 201310617848 A CN201310617848 A CN 201310617848A CN 103631661 B CN103631661 B CN 103631661B
- Authority
- CN
- China
- Prior art keywords
- application program
- application
- priority
- time
- background
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000008569 process Effects 0.000 title abstract description 4
- 238000007726 management method Methods 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 22
- 230000007246 mechanism Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种内存管理方法和装置,用于解决现有操作***的内存管理机制下,当后台运行的应用程序所占用的内存资源会被***回收后,用户需要将该应用程序切换到前台运行,需要较长的加载时间,降低了用户体验的问题。本发明实施例的方法包括:确定***内存的使用率超过设定的上限值;根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于所述上限值;其中,应用程序当前的优先级信息包括该应用程序被使用的次数和/或该应用程序最后一次被使用的时刻。
Description
技术领域
本发明涉及内存管理技术领域,特别涉及一种内存管理方法和装置。
背景技术
在各种操作***中,用户打开某个应用程序后,该应用程序会占用***内存,即使该应用程序被切换到后台运行,仍会占用一定的***内存。若用户打开的应用程序过多,则占用的***内存也越多,而***内存占用越多,应用程序运行速度越慢,甚至造成死机现象。
解决上述问题的一个方法是增加***内存,但这将带来硬件成本的提高,因此,内存管理技术应运而生。内存管理技术是指应用程序运行时,对***内存资源的分配和使用的技术,其主要的目的是如何高效、快速的分配内存资源,并且在适当的时候释放和回收内存资源。
以Android操作***为例,在Android操作***的内存管理机制下,在***内存占用达到上限值时,***会随机释放后台运行的应用程序所占用的内存资源,以降低***内存占用率,提高***性能。然而,现有的Android操作***的内存管理机制存在如下缺陷:当后台运行的应用程序所占用的内存资源会被***回收后,若用户需要将该应用程序在前台运行时,***需要重新加载该应用程序,这样会导致在Launcher(Android操作***中的桌面启动器)上将该应用程序切换到前台运行需要较长的加载时间(一般至少需要2秒),这样,用户每次切换都需要至少2秒的加载时间,降低了用户体验。
综上所述,现有操作***的内存管理机制下,当后台运行的应用程序所占用的内存资源会被***回收后,用户需要将该应用程序切换到前台运行,需要较长的加载时间,降低了用户体验。
发明内容
本发明实施例提供了一种内存管理方法和装置,用于解决现有操作***的内存管理机制下,当后台运行的应用程序所占用的内存资源会被***回收后,用户需要将该应用程序切换到前台运行,需要较长的加载时间,降低了用户体验的问题。
本发明实施例提供了一种内存管理方法,该方法包括:
确定***内存的使用率超过设定的上限值;
根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于所述上限值;
其中,所述应用程序当前的优先级信息包括所述应用程序被使用的次数和/或所述应用程序最后一次被使用的时刻。
在实施中,根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源,具体包括:
根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级;
按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源。
基于上述实施例,根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
根据当前时刻为止的时间范围内后台运行的各应用程序被使用的次数,确定后台运行的各应用程序中,当前时刻为止的时间范围内被使用的次数最多的应用程序的优先级最高且当前时刻为止的时间范围内被使用的次数最少的应用程序的优先级最低。
进一步,根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
若当前时刻为止的时间范围内后台运行的至少两个应用程序被使用的次数相同,则根据所述至少两个应用程序最后一次被使用的时刻,确定所述至少两个应用程序中,最后一次被使用的时刻与当前时刻的时间间隔最短的应用程序的优先级最高且最后一次被使用的时刻与当前时刻的时间间隔最长的应用程序的优先级最低。
作为一种优选的实现方式,按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源,具体包括:
按照优先级从低到高的顺序,依次关闭当前时刻为止后台运行的应用程序中优先级最低的应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于所述上限值。
作为另一种优选的实现方式,按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源,具体包括:
确定***内存的使用率超过所述上限值的差值,并确定所述差值对应的***内存的容量;
按照优先级从低到高的顺序,从后台运行的应用程序中,选择至少一个应用程序且所选择的至少一个应用程序所占用的内存资源之和大于或等于确定的差值对应的***内存的容量,关闭所选择的至少一个应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
本发明实施例中,在确定***内存的使用率超过设定的上限值时,根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。由于本发明实施例根据各应用程序当前的优先级信息,确定需要关闭的应用程序,即根据后台运行的各应用程序被使用的次数和/或该应用程序最后一次被使用的时刻,从后台运行的应用程序中,关闭至少一个应用程序,从而提高了用户体验。
本发明实施例提供了一种内存管理装置,该装置包括:
确定模块,用于确定***内存的使用率超过设定的上限值;
处理模块,用于根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于所述上限值;
其中,所述应用程序当前的优先级信息包括所述应用程序被使用的次数和/或所述应用程序最后一次被使用的时刻。
在实施中,所述处理模块具体用于:
根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级;按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源。
基于上述实施例,所述处理模块根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
根据当前时刻为止的时间范围内后台运行的各应用程序被使用的次数,确定后台运行的各应用程序中,当前时刻为止的时间范围内被使用的次数最多的应用程序的优先级最高且当前时刻为止的时间范围内被使用的次数最少的应用程序的优先级最低。
进一步,所述处理模块根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
若当前时刻为止的时间范围内后台运行的至少两个应用程序被使用的次数相同,则根据所述至少两个应用程序最后一次被使用的时刻,确定所述至少两个应用程序中,最后一次被使用的时刻与当前时刻的时间间隔最短的应用程序的优先级最高且最后一次被使用的时刻与当前时刻的时间间隔最长的应用程序的优先级最低。
在实施中,所述处理模块按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源,具体包括:
按照优先级从低到高的顺序,依次关闭当前时刻为止后台运行的应用程序中优先级最低的应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于所述上限值;或者,
确定***内存的使用率超过所述上限值的差值,并确定所述差值对应的***内存的容量;按照优先级从低到高的顺序,从后台运行的应用程序中,选择至少一个应用程序且所选择的至少一个应用程序所占用的内存资源之和大于或等于确定的差值对应的***内存的容量,关闭所选择的至少一个应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
本发明实施例提供的装置中,在确定***内存的使用率超过设定的上限值时,根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。由于本发明实施例根据各应用程序当前的优先级信息,确定需要关闭的应用程序,即根据后台运行的各应用程序被使用的次数和/或该应用程序最后一次被使用的时刻,从后台运行的应用程序中,关闭至少一个应用程序,从而提高了用户体验。
附图说明
图1为本发明实施例提供的一种内存管理方法的示意图;
图2为本发明实施例提供的另一种内存管理方法的示意图;
图3为本发明实施例提供的内存管理装置的示意图。
具体实施方式
本发明实施例在确定***内存的使用率超过设定的上限值时,根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放已关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
下面结合说明书附图对本发明实施例作进一步详细描述。应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
参见图1所示,本发明实施例提供的一种内存管理方法,包括以下步骤:
步骤11、确定***内存的使用率超过设定的上限值;
具体的,当新的应用程序被加载时,新的应用程序所占用的***内存与当前已被加载的各应用程序(包括前台运行的应用程序和后台运行的应用程序)所占用的***内存之和有可能超过设定的上限值,在确定***内存的使用率超过设定的上限值时,执行步骤12,以释放部分***内存,使***能够正常运行。
本步骤中,***内存的使用率包括被加载的新的应用程序所占用的***内存与当前已被加载的各应用程序所占用的***内存之和。
本步骤中,设定的上限值是经验值,可根据***需要设定,如将上限值设定为70%,即当前已被占用的***内存占据***内存总量(包括当前已被占用的***内存和当前处于空闲的***内存)的70%。
步骤12、根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
本步骤中,应用程序当前的优先级信息包括该应用程序被使用的次数和/或该应用程序最后一次被使用的时刻。
其中,应用程序被使用的次数包括该应用程序被加载的次数以及该应用程序从后台运行被切换到前台运行的次数;应用程序最后一次被使用的时刻可以是该应用程序当前时刻为止的时间范围内最后一次被加载的时刻,也可以是该应用程序当前时刻为止的时间范围内从后台运行被切换到前台运行的时刻。
本步骤中,根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,从而保证了***内存始终在一个平衡的范围内运行,进而保证了***的正常运行。
本发明实施例中,在确定***内存的使用率超过设定的上限值时,根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。由于本发明实施例根据各应用程序当前的优先级信息,确定需要关闭的应用程序,即根据后台运行的各应用程序被使用的次数和/或该应用程序最后一次被使用的时刻,从后台运行的应用程序中,关闭至少一个应用程序,从而提高了用户体验。
本发明实施例可以应用于各种操作***,如Android操作***、Linux操作***等等;本发明实施例可以应用于各种具有操作***的硬件设备,如手机、电脑、电视机等等。
在实施中,步骤11之前,还包括:
实时监测***内存的使用率,并判断***内存的使用率是否超过设定的上限值。
进一步,若判断结果为***内存的使用率超过设定的上限值(即步骤11),则执行步骤12;
若判断结果为***内存的使用率没有超过设定的上限值,则继续监测***内存的使用率。
在实施中,步骤12中,根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,具体包括:
根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级;以及,
按照优先级从低到高的顺序,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
基于上述实施例,在实施中,步骤12中,根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
根据当前时刻为止的时间范围内后台运行的各应用程序被使用的次数,确定后台运行的各应用程序中,当前时刻为止的时间范围内被使用的次数最多的应用程序的优先级最高且当前时刻为止的时间范围内被使用的次数最少的应用程序的优先级最低。
具体的,若当前时刻为止的时间范围内应用程序被使用的次数越多,则该应用程序的优先级越高,即用户经常访问的应用程序具有高优先级,而用户不常访问的应用程序具有低优先级,从而步骤12中,可以根据用户对各应用程序的操控习惯,从后台运行的各应用程序中,关闭至少一个优先级低的应用程序(即用户不常访问的应用程序),以使***内存的使用率小于或等于设定的上限值。
举例说明,以三个应用程序为例进行说明,假设应用程序A被使用的次数为3次,应用程序B被使用的次数为5次,应用程序C被使用的次数为1次,则确定出的该三个应用程序的优先级从高到低依次为应用程序B、应用程序A、应用程序C。
进一步,步骤12中,在确定后台运行的各应用程序当前的优先级时,有可能出现至少两个应用程序被使用的次数相同,在这种情况下,根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
若当前时刻为止的时间范围内后台运行的至少两个应用程序被使用的次数相同,则根据该至少两个应用程序最后一次被使用的时刻,确定该至少两个应用程序中,最后一次被使用的时刻与当前时刻的时间间隔最短的应用程序的优先级最高且最后一次被使用的时刻与当前时刻的时间间隔最长的应用程序的优先级最低。
具体的,若当前时刻为止的时间范围内后台运行的至少两个应用程序被使用的次数相同,则进一步根据该至少两个应用程序最后一次被使用的时刻,确定该至少两个应用程序的优先级。该至少两个应用程序中,最后一次被使用的时刻与当前时刻的时间间隔越短的应用程序的优先级越高,即用户经常访问的且访问时间与当前时刻间距最短的应用程序具有高优先级,而用户不常访问的或者访问时间与当前时刻间距最长的应用程序具有低优先级。
举例说明,仍以三个应用程序为例进行说明,假设应用程序A被使用的次数为3次,且最后一次使用的时间为2013年1月1日11:10,应用程序B被使用的次数为3次,且最后一次使用的时间为2013年1月1日13:10,应用程序C被使用的次数为1次,且最后一次使用的时间为2013年1月1日15:10,则确定出的该三个应用程序的优先级从高到低依次为应用程序B、应用程序A、应用程序C。
基于上述任一实施例,步骤12中,按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,具体包括以下两种优选处理方式:
方式一、按照优先级从低到高的顺序,依次关闭当前时刻为止后台运行的应用程序中优先级最低的应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
具体的,按照优先级从低到高的顺序,从后台运行的应用程序中,关闭优先级最低的应用程序,并释放优先级最低的应用程序对应的内存资源;判断***内存的使用率是否超过设定的上限值;若是,则执行上述按照优先级从低到高的顺序,从后台运行的应用程序中,关闭优先级最低的应用程序,并释放优先级最低的应用程序对应的内存资源的步骤;若否,则结束流程。
该方式下,按照优先级从低到高的顺序,从后台运行的应用程序中,关闭优先级最低的应用程序(即用户最不常用的应用程序),并释放该应用程序对应的内存资源;若此时,***内存的使用率仍超过了设定的上限值,则再执行按照优先级从低到高的顺序,从后台运行的应用程序中,关闭优先级最低的应用程序,并释放该应用程序对应的内存资源;依次类推,直至***内存的使用率小于或等于设定的上限值。
举例说明,仍以三个应用程序为例进行说明,假设后台运行的三个应用程序按照优先级从高到低的顺序依次为应用程序B、应用程序A、应用程序C,则当***内存的使用率超过了设定的上限值时,从后台运行的三个应用程序(即应用程序A、应用程序B和应用程序C)中关闭优先级最低的应用程序(即应用程序C),并释放应用程序C所占用的内存资源;若此时***内存的使用率小于或等于设定的上限值,则继续实时监测***内存的使用率,若此时***内存的使用率仍超过设定的上限值,则后台运行的两个应用程序(即应用程序A和应用程序B)中关闭优先级最低的应用程序(即应用程序A),并释放应用程序A所占用的内存资源,依次类推,直至***内存的使用率小于或等于设定的上限值。
该方式下,当***内存的使用率超过了设定的上限值时,根据优先级从低到高的顺序,先关闭用户最不常用的应用程序并释放该应用程序所占用的内存资源,以保证***内存的使用率小于或等于设定的上限值,由于保留了用户常用的应用程序在后台运行,则用户在将该常用的应用程序切换到前台运行时,***不需要重新加载该应用程序,从而提高了用户体验。
方式二、确定***内存的使用率与设定上限值之间的差值,并确定该差值对应的***内存的容量;按照优先级从低到高的顺序,从处于后台运行的应用程序中,选择至少一个应用程序且所选择的至少一个应用程序所占用的内存资源之和大于或等于确定的差值对应的***内存的容量,关闭所选择的至少一个应用程序,并释放所选择的至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
具体的,当***内存的使用率超过了设定的上限值时,先确定***内存的使用率与设定的上限值之间的差值对应的***内存的容量,例如,***内存的总容量为100M,设定的上限值为70%,若***内存的使用率为80%,则***内存的使用率与设定的上限值之间的差值为10%,该差值对应的***内存的容量为100M*10%=10M;
再按照优先级从低到高的顺序,选择至少一个应用程序且所选择的至少一个应用程序所占用的内存资源之和大于或等于确定的差值对应的***内存的容量,关闭所选择的至少一个应用程序,并释放所选择的至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
该方式下,当***内存的使用率超过了设定的上限值时,一次性从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。由于该方式也是先关闭用户最不常用的应用程序并释放该应用程序所占用的内存资源,保留了用户常用的应用程序在后台运行,这样,用户在将该常用的应用程序切换到前台运行时,***不需要重新加载该应用程序,从而提高了用户体验。
本发明实施例中,步骤12中可以采用上述方式一或方式二,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源。
下面结合具体实施例对本发明实施例的内存管理方法进行说明,以安装了Android操作***的电视机为例进行说明,其他情况与此类似,此处不再一一列举说明。
对于电视机来说,用户可以通过电视机的遥控器的左/右键,选择不同的应用程序(如视频播放器、音乐播放器、游戏等),当前所选择的应用程序会在当前页面运行,前一次所选择的应用程序会在后台运行。
本发明实施例提供的内存管理方法包括以下三部分:
一、建立堆栈管理结构,该堆栈管理结构中包括当前处于前台运行的应用程序和当前处于后台运行的应用程序,每个应用程序对应一个优先级信息,当前处于前台运行的应用程序位于堆栈的低端,当前处于后台运行的应用程序按照优先级从高到低的顺序依次排列,其中,优先级最低的应用程序位于堆栈的顶端,具体实现参见以下程序:
上述程序中,SaveParams用来存储当前处于前台运行的应用程序和当前处于后台运行的应用程序对应的信息(如该应用程序的ID、该应用程序的运行状态信息等),LinkedList用来存储每个应用程序的优先级信息,根据***内存的使用情况,从LinkedList队列中得到要释放的应用程序。
二、根据用户的操作行为,记录用户常访问的应用程序。具体为:
在用户将某一个应用程序切换到前台运行时,将用户切入到前台运行的应用程序压栈(即进栈),如果该应用程序已经被压栈,则记录该应用程序的压栈次数,并根据压栈次数对上述LinkedList队列中的各应用程序重新排序,从而实现了按照用户使用次数对堆栈的优先级排序。当需要释放后台运行的应用程序或载入新的应用程序时,可以根据上一次的压栈情况进行管理。具体实现参见以下程序:
三、对后台应用程序所占用的***内存的管理,包括两部分内容:一是当内存达到峰值时根据当前堆栈的优先级,删除1个应用程序;二是释放所删除的应用程序对应的内存资源。具体实现参见以下程序:
以安装了Android操作***的电视机为例,参见图2所示,本发明实施例的内存管理方法具体包括以下步骤:
步骤21、接收用户发送的按键值;
具体的,用户可以通过电视机的遥控器上的按键向电视机发送指令,***接收到用户通过遥控器发送的按键值。
步骤22、判断接收到的按键值是否为左/右键;
若是,即有新的应用程序被加载,则执行步骤23;
若否,则转入执行步骤21;
具体的,用户可以通过电视机的遥控器上的左/右键,选择不同的应用程序(如视频播放器、音乐播放器、游戏等)。
步骤23、判断***当前内存使用率是否超过设定的上限值,即判断当前是否需要释放***内存;
若是,则执行步骤24;
若否,则执行步骤25;
步骤24、释放当前堆栈顶端的应用程序,即从后台运行的应用程序中,释放当前优先级最低的应用程序。
步骤25、将新的应用程序压栈,并记录该新的应用程序的优先级信息,并转入执行步骤21。
需要说明的是,由于传统的Android开发模式中,java自身的内存释放机制是不需要应用程序来干预的,但是这会带来一个问题,那就是需要释放的内存被释放的时间是不可控的,有可能出现这样的情况,当***内存使用率很高,马上就要溢出时,由于Android***下管理内存释放的线程可能在处理其他的工作,而使***内存不能得到释放,最终导致***内存耗尽。针对这种情况,本发明实施例可以采用手动管理方式,将需要释放的内存资源通知给操作***,这样操作***能够以最快的速度释放需要释放的内存资源,从而达到高效切换内存的功能。
上述方法处理流程可以用软件程序实现,该软件程序可以存储在存储介质中,当存储的软件程序被调用时,执行上述方法步骤。
基于同一发明构思,本发明实施例中还提供了一种内存管理装置,由于该装置解决问题的原理与上述内存管理方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
参见图3所示,本发明实施例提供了一种内存管理装置,该装置包括:
确定模块31,用于确定***内存的使用率超过设定的上限值;
处理模块32,用于根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值;
其中,应用程序当前的优先级信息包括该应用程序被使用的次数和/或该应用程序最后一次被使用的时刻。
在实施中,确定模块31实时监测***内存的使用率,并判断***内存的使用率是否超过设定的上限值。
在实施中,处理模块32具体用于:
根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级;按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源。
基于上述实施例,处理模块32根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
根据当前时刻为止的时间范围内后台运行的各应用程序被使用的次数,确定后台运行的各应用程序中,当前时刻为止的时间范围内被使用的次数最多的应用程序的优先级最高且当前时刻为止的时间范围内被使用的次数最少的应用程序的优先级最低。
具体的,若当前时刻为止的时间范围内应用程序被使用的次数越多,则该应用程序的优先级越高,即用户经常访问的应用程序具有高优先级,而用户不常访问的应用程序具有低优先级,从而处理模块32可以根据用户对各应用程序的操控习惯,从后台运行的各应用程序中,关闭至少一个优先级低的应用程序(即用户不常访问的应用程序),以使***内存的使用率小于或等于设定的上限值。
进一步,处理模块32根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
若当前时刻为止的时间范围内后台运行的至少两个应用程序被使用的次数相同,则根据该至少两个应用程序最后一次被使用的时刻,确定该至少两个应用程序中,最后一次被使用的时刻与当前时刻的时间间隔最短的应用程序的优先级最高且最后一次被使用的时刻与当前时刻的时间间隔最长的应用程序的优先级最低。
具体的,若当前时刻为止的时间范围内后台运行的至少两个应用程序被使用的次数相同,则处理模块32进一步根据该至少两个应用程序最后一次被使用的时刻,确定该至少两个应用程序的优先级。该至少两个应用程序中,最后一次被使用的时刻与当前时刻的时间间隔越短的应用程序的优先级越高,即用户经常访问的且访问时间与当前时刻间距最短的应用程序具有高优先级,而用户不常访问的或者访问时间与当前时刻间距最长的应用程序具有低优先级。
基于上述任一实施例,处理模块32按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放该至少一个应用程序对应的内存资源,具体包括:
按照优先级从低到高的顺序,依次关闭当前时刻为止后台运行的应用程序中优先级最低的应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值;
或者,
确定***内存的使用率超过设定的上限值的差值,并确定该差值对应的***内存的容量;按照优先级从低到高的顺序,从后台运行的应用程序中,选择至少一个应用程序且所选择的至少一个应用程序所占用的内存资源之和大于或等于确定的差值对应的***内存的容量,关闭所选择的至少一个应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值。
本发明实施例提供的内存管理装置可以设置于各种具有操作***的硬件设备中,如手机、电脑、电视机等等。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种内存管理方法,其特征在于,该方法包括:
确定***内存的使用率超过设定的上限值;
确定***内存的使用率超过所述上限值的差值,并确定所述差值对应的***内存的容量;
按照优先级从低到高的顺序,从后台运行的应用程序中,选择至少一个应用程序且所选择的至少一个应用程序所占用的内存资源之和大于或等于确定的差值对应的***内存的容量,关闭所选择的至少一个应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值;
其中,所述应用程序当前的优先级信息包括所述应用程序被使用的次数和/或所述应用程序最后一次被使用的时刻。
2.如权利要求1所述的方法,其特征在于,根据应用程序当前的优先级信息,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源,具体包括:
根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级;
按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源。
3.如权利要求2所述的方法,其特征在于,根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
根据当前时刻为止的时间范围内后台运行的各应用程序被使用的次数,确定后台运行的各应用程序中,当前时刻为止的时间范围内被使用的次数最多的应用程序的优先级最高且当前时刻为止的时间范围内被使用的次数最少的应用程序的优先级最低。
4.如权利要求3所述的方法,其特征在于,根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
若当前时刻为止的时间范围内后台运行的至少两个应用程序被使用的次数相同,则根据所述至少两个应用程序最后一次被使用的时刻,确定所述至少两个应用程序中,最后一次被使用的时刻与当前时刻的时间间隔最短的应用程序的优先级最高且最后一次被使用的时刻与当前时刻的时间间隔最长的应用程序的优先级最低。
5.一种内存管理装置,其特征在于,该装置包括:
确定模块,用于确定***内存的使用率超过设定的上限值;
处理模块,用于确定***内存的使用率超过所述上限值的差值,并确定所述差值对应的***内存的容量;按照优先级从低到高的顺序,从后台运行的应用程序中,选择至少一个应用程序且所选择的至少一个应用程序所占用的内存资源之和大于或等于确定的差值对应的***内存的容量,关闭所选择的至少一个应用程序,并释放所关闭的应用程序对应的内存资源,以使***内存的使用率小于或等于设定的上限值;
其中,所述应用程序当前的优先级信息包括所述应用程序被使用的次数和/或所述应用程序最后一次被使用的时刻。
6.如权利要求5所述的装置,其特征在于,所述处理模块具体用于:
根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级;按照优先级从低到高的顺序,从后台运行的应用程序中,关闭至少一个应用程序,并释放所述至少一个应用程序对应的内存资源。
7.如权利要求6所述的装置,其特征在于,所述处理模块根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
根据当前时刻为止的时间范围内后台运行的各应用程序被使用的次数,确定后台运行的各应用程序中,当前时刻为止的时间范围内被使用的次数最多的应用程序的优先级最高且当前时刻为止的时间范围内被使用的次数最少的应用程序的优先级最低。
8.如权利要求7所述的装置,其特征在于,所述处理模块根据应用程序当前的优先级信息,确定后台运行的各应用程序的优先级,具体包括:
若当前时刻为止的时间范围内后台运行的至少两个应用程序被使用的次数相同,则根据所述至少两个应用程序最后一次被使用的时刻,确定所述至少两个应用程序中,最后一次被使用的时刻与当前时刻的时间间隔最短的应用程序的优先级最高且最后一次被使用的时刻与当前时刻的时间间隔最长的应用程序的优先级最低。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310617848.4A CN103631661B (zh) | 2013-11-27 | 2013-11-27 | 一种内存管理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310617848.4A CN103631661B (zh) | 2013-11-27 | 2013-11-27 | 一种内存管理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103631661A CN103631661A (zh) | 2014-03-12 |
CN103631661B true CN103631661B (zh) | 2017-04-05 |
Family
ID=50212750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310617848.4A Expired - Fee Related CN103631661B (zh) | 2013-11-27 | 2013-11-27 | 一种内存管理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103631661B (zh) |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902359B (zh) * | 2014-03-31 | 2018-02-23 | 深圳创维-Rgb电子有限公司 | 基于Android***内存优化与应用调度方法及*** |
CN104199733A (zh) * | 2014-09-05 | 2014-12-10 | 广州金山网络科技有限公司 | 一种应用程序进程禁用方法及装置 |
CN104317673B (zh) * | 2014-10-24 | 2017-12-15 | 大唐网络有限公司 | 应用程序的回收方法、装置及其恢复方法、装置 |
CN110045965B (zh) * | 2014-11-20 | 2023-11-17 | 华为终端有限公司 | 一种管理应用的方法和移动终端 |
CN104331337B (zh) * | 2014-11-25 | 2018-07-24 | 宇龙计算机通信科技(深圳)有限公司 | ***内存管理方法、***内存管理装置和终端 |
CN104461546A (zh) * | 2014-12-15 | 2015-03-25 | 北京奇虎科技有限公司 | 基于应用程序的计算设备优化方法及装置 |
CN105786550B (zh) * | 2014-12-26 | 2020-07-24 | 联想(北京)有限公司 | 一种内存应用处理方法及装置 |
CN107908462B (zh) * | 2014-12-31 | 2022-01-25 | Oppo广东移动通信有限公司 | 控制应用运行的方法和移动终端设备和相关介质产品 |
CN104636144A (zh) * | 2015-02-26 | 2015-05-20 | 北京数字天域科技有限责任公司 | 一种移动终端后台程序管理方法及装置 |
KR101968106B1 (ko) * | 2015-04-14 | 2019-04-11 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 프로세스 관리 방법, 장치, 및 디바이스 |
CN104778086A (zh) * | 2015-04-15 | 2015-07-15 | 天脉聚源(北京)教育科技有限公司 | 一种释放资源的方法及装置 |
CN104750550B (zh) * | 2015-04-20 | 2019-06-14 | 上海斐讯数据通信技术有限公司 | 移动终端应用管理***、方法及使用次数记录生成方法 |
CN105094958A (zh) * | 2015-06-23 | 2015-11-25 | 小米科技有限责任公司 | 后台应用的数据处理方法及装置 |
CN104994432B (zh) * | 2015-06-25 | 2019-06-28 | 海信集团有限公司 | 一种切换音视频应用的方法及电视机 |
CN106326137B (zh) * | 2015-07-02 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种内存优化方法、装置及用户设备 |
CN105278370B (zh) * | 2015-09-30 | 2018-03-20 | 小米科技有限责任公司 | 节电模式开启方法及装置 |
CN105354093A (zh) * | 2015-12-09 | 2016-02-24 | 广东欧珀移动通信有限公司 | 内存管理方法及移动终端 |
CN105550041A (zh) * | 2016-03-04 | 2016-05-04 | 珠海市魅族科技有限公司 | 一种移动终端控制方法及控制装置 |
CN107291549B (zh) * | 2016-03-31 | 2020-11-24 | 阿里巴巴集团控股有限公司 | 一种管理应用程序的方法及装置 |
CN107301093B (zh) * | 2016-04-15 | 2021-02-09 | 华为技术有限公司 | 一种管理资源的方法和装置 |
CN107912063B (zh) * | 2016-04-27 | 2021-05-18 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN105912407A (zh) * | 2016-05-06 | 2016-08-31 | 上海斐讯数据通信技术有限公司 | 移动终端的内存清理方法及*** |
CN105912395B (zh) * | 2016-06-29 | 2019-03-15 | 中科创达软件股份有限公司 | 一种进程管理方法及装置 |
CN106155699B (zh) * | 2016-07-29 | 2019-11-29 | 维沃移动通信有限公司 | 一种后台进程的管理方法及移动终端 |
CN106293913A (zh) * | 2016-08-01 | 2017-01-04 | 宇龙计算机通信科技(深圳)有限公司 | 应用程序的控制方法、控制装置和终端 |
CN109213539B (zh) | 2016-09-27 | 2021-10-26 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN107220077B (zh) * | 2016-10-20 | 2019-03-19 | 华为技术有限公司 | 应用启动的管控方法和管控设备 |
CN106569890A (zh) * | 2016-11-09 | 2017-04-19 | 广东欧珀移动通信有限公司 | 一种应用控制方法及终端 |
CN106534935A (zh) * | 2016-11-15 | 2017-03-22 | 青岛海信电器股份有限公司 | 硬件资源冲突的控制方法及装置 |
CN106792165A (zh) * | 2016-12-02 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 一种资源动态调整方法及装置 |
CN106776030A (zh) * | 2016-12-21 | 2017-05-31 | 维沃移动通信有限公司 | 一种动态管理内存的方法及移动终端 |
CN106648894A (zh) * | 2016-12-22 | 2017-05-10 | 惠州Tcl移动通信有限公司 | 一种基于移动终端的内存占用控制方法及*** |
CN106776041B (zh) * | 2016-12-30 | 2020-01-14 | Oppo广东移动通信有限公司 | 一种数据处理方法及装置 |
CN107168792A (zh) * | 2017-04-24 | 2017-09-15 | 宇龙计算机通信科技(深圳)有限公司 | 一种进程管理方法、及终端设备 |
CN108874109A (zh) * | 2017-05-16 | 2018-11-23 | 复旦大学 | 后台应用的清理方法及装置 |
CN109101324A (zh) * | 2017-06-20 | 2018-12-28 | 阿里巴巴集团控股有限公司 | 应用状态的调整方法、操作***及ar设备 |
CN109117263B (zh) * | 2017-06-23 | 2023-08-15 | 中兴通讯股份有限公司 | 一种用户终端内存释放的方法及装置 |
CN107315630A (zh) * | 2017-06-23 | 2017-11-03 | 上海传英信息技术有限公司 | 一种智能终端内应用程序的控制方法及控制*** |
CN107229500A (zh) * | 2017-06-26 | 2017-10-03 | 珠海市魅族科技有限公司 | 应用处理方法、装置、终端及存储介质 |
CN107291543B (zh) * | 2017-07-31 | 2020-08-07 | Oppo广东移动通信有限公司 | 应用程序处理方法、装置、存储介质和终端 |
CN107463437B (zh) * | 2017-07-31 | 2020-01-31 | Oppo广东移动通信有限公司 | 应用管控方法、装置、存储介质及电子设备 |
CN107450951B (zh) * | 2017-07-31 | 2020-08-04 | Oppo广东移动通信有限公司 | 应用程序处理方法、装置、存储介质和终端 |
CN107844333A (zh) * | 2017-09-06 | 2018-03-27 | 努比亚技术有限公司 | 一种应用清理方法、移动终端及计算机可读存储介质 |
CN107708140B (zh) * | 2017-11-23 | 2021-04-06 | Oppo广东移动通信有限公司 | 无线网络分流处理方法以及相关产品 |
CN109960572B (zh) * | 2017-12-22 | 2020-06-02 | 北京三快在线科技有限公司 | 设备资源管理方法和装置以及智能终端 |
CN110018904A (zh) * | 2018-01-10 | 2019-07-16 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN110018900B (zh) * | 2018-01-10 | 2023-01-24 | Oppo广东移动通信有限公司 | 内存处理方法和装置、电子设备、计算机可读存储介质 |
CN108762925A (zh) * | 2018-05-24 | 2018-11-06 | 四川斐讯信息技术有限公司 | 一种存储设备应用程序的管理方法及*** |
CN109164959A (zh) * | 2018-08-02 | 2019-01-08 | 珠海格力电器股份有限公司 | 一种应用展示方法、装置、终端及可读存储介质 |
CN109274815A (zh) * | 2018-08-22 | 2019-01-25 | 奇酷互联网络科技(深圳)有限公司 | 程序运行控制方法、装置、可读存储介质及移动终端 |
CN111107429A (zh) * | 2018-10-26 | 2020-05-05 | 深圳Tcl新技术有限公司 | 提高电视***性能的方法、装置及计算机可读存储介质 |
CN109542607A (zh) * | 2018-11-30 | 2019-03-29 | 北京远特科技股份有限公司 | 一种内存管理方法及装置 |
CN110347434A (zh) * | 2019-05-31 | 2019-10-18 | 口碑(上海)信息技术有限公司 | 一种针对计算设备应用的处理方法以及装置 |
CN112783636B (zh) * | 2019-11-07 | 2024-05-28 | 北京小米移动软件有限公司 | 资源分配方法、装置及存储介质 |
CN111381953B (zh) * | 2020-03-19 | 2024-01-16 | Oppo广东移动通信有限公司 | 进程管理方法、装置、存储介质及电子设备 |
CN111400052A (zh) * | 2020-04-22 | 2020-07-10 | Oppo广东移动通信有限公司 | 解压缩方法、装置、电子设备及存储介质 |
CN112291205B (zh) * | 2020-10-13 | 2023-04-07 | 杭州迪普科技股份有限公司 | 深度包检测业务的控制方法、装置及计算机设备 |
CN113468020A (zh) * | 2021-06-28 | 2021-10-01 | 广州虎牙科技有限公司 | 内存监控方法、装置、电子设备及计算机可读存储介质 |
CN117880229B (zh) * | 2024-03-11 | 2024-05-17 | 苏州特思恩科技有限公司 | 一种buffer资源自动释放器的实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102479108A (zh) * | 2010-11-26 | 2012-05-30 | 中国科学院声学研究所 | 一种多应用进程的嵌入式***终端资源管理***及方法 |
CN102521057A (zh) * | 2011-12-31 | 2012-06-27 | 曙光信息产业股份有限公司 | 资源调度方法和装置 |
EP2541407A1 (en) * | 2010-02-23 | 2013-01-02 | Fujitsu Limited | Multi-core processor system, control program, and control method |
CN103092689A (zh) * | 2013-01-10 | 2013-05-08 | 深圳市金立通信设备有限公司 | 一种进程管理的方法及终端 |
CN103246568A (zh) * | 2013-04-16 | 2013-08-14 | 深圳桑菲消费通信有限公司 | 一种通过手机设置应用优先级的方法和装置 |
-
2013
- 2013-11-27 CN CN201310617848.4A patent/CN103631661B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2541407A1 (en) * | 2010-02-23 | 2013-01-02 | Fujitsu Limited | Multi-core processor system, control program, and control method |
CN102479108A (zh) * | 2010-11-26 | 2012-05-30 | 中国科学院声学研究所 | 一种多应用进程的嵌入式***终端资源管理***及方法 |
CN102521057A (zh) * | 2011-12-31 | 2012-06-27 | 曙光信息产业股份有限公司 | 资源调度方法和装置 |
CN103092689A (zh) * | 2013-01-10 | 2013-05-08 | 深圳市金立通信设备有限公司 | 一种进程管理的方法及终端 |
CN103246568A (zh) * | 2013-04-16 | 2013-08-14 | 深圳桑菲消费通信有限公司 | 一种通过手机设置应用优先级的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103631661A (zh) | 2014-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103631661B (zh) | 一种内存管理方法和装置 | |
CN108984264B (zh) | 虚拟gpu的实现方法、装置及*** | |
CN105808447B (zh) | 一种终端设备的内存回收方法和装置 | |
KR102182295B1 (ko) | 하드웨어 기반 태스크 스케쥴링 장치 및 방법 | |
US9542229B2 (en) | Multiple core real-time task execution | |
US8516492B2 (en) | Soft partitions and load balancing | |
US11150949B2 (en) | Resource release method, resource allocation method, devices, and computer program products | |
CN110895492B (zh) | 设备控制方法、装置、存储介质及电子设备 | |
CN104657380A (zh) | 一种图片加载方法和装置 | |
US11360884B2 (en) | Reserved memory in memory management system | |
EP3129880A1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
CN107368367B (zh) | 资源分配的处理方法、装置及电子设备 | |
CN105956035A (zh) | 一种文件存储方法及装置 | |
CN108701026B (zh) | 用于在存储器约束下管理进程的方法和装置 | |
CN103179048A (zh) | 云数据中心的主机QoS策略变换方法及*** | |
CN105988875B (zh) | 一种运行进程的方法及装置 | |
KR101896497B1 (ko) | 성능 제어 방법 및 이를 위한 장치 | |
CN116502225B (zh) | 自适应分组冗余编排的病毒扫描方法、装置及电子设备 | |
CN112231053B (zh) | 一种负载均衡服务分配方法及装置 | |
CN109358961B (zh) | 一种资源调度方法及其装置和具有存储功能的装置 | |
JP2013117806A (ja) | Cpu割当時間管理装置及びcpu割当時間管理プログラム | |
JP2006107197A (ja) | メモリ制御方法およびプログラムならびに端末装置 | |
US20160110221A1 (en) | Scheduling system, scheduling method, and recording medium | |
KR101998278B1 (ko) | 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 | |
US9483317B1 (en) | Using multiple central processing unit cores for packet forwarding in virtualized networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170405 Termination date: 20191127 |
|
CF01 | Termination of patent right due to non-payment of annual fee |