CN105279098B - 内存的清理方法及装置 - Google Patents
内存的清理方法及装置 Download PDFInfo
- Publication number
- CN105279098B CN105279098B CN201410351366.3A CN201410351366A CN105279098B CN 105279098 B CN105279098 B CN 105279098B CN 201410351366 A CN201410351366 A CN 201410351366A CN 105279098 B CN105279098 B CN 105279098B
- Authority
- CN
- China
- Prior art keywords
- application process
- page set
- page
- run
- cleaning
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种内存的清理方法及装置,在上述方法中,获取第一应用进程在多次运行过程中同时运行的多个应用进程;从多个应用进程中选取部分应用进程,其中,部分应用进程是根据多个应用进程中每个应用进程在多次运行过程中的运行概率确定的;对与部分应用进程对应的第一内存页集合进行清理。根据本发明提供的技术方案,加强了内存清理的有效性,提升了系统的反应速度。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种内存的清理方法及装置。
背景技术
内存清理对保持移动终端稳定流畅地运行具有重要意义。相关技术中提到的内存清理算法通常是基于优先级和最近最久未使用(LRU)来实现的,其主要思想在于:当内存不足需要清理时,首先清理优先级低的进程空间,而在优先级别相同的情况下,可以按照LRU的次序进行清理(即最近使用的最后清理)。此种算法虽然简单、直接、高效,但是现代程序设计往往遵循组件化设计思想,即一个程序的运行需要依赖其它应用进程存在。因此,只是按照进程优先级和LRU算法来决定如何清理内存,就可能会出现将当前应用在运行过程中需要使用的应用内存也一并清理完成的情况发生,从而导致需要重新将已经清理掉的内存再换进来。
由此可见,相关技术中所提供的内存清理方式忽视了应用进程之间的内存依赖关系。
发明内容
本发明提供了一种内存的清理方法及装置,以至少解决相关技术中所提供的内存清理方式没有考虑应用进程之间的依赖性的问题。
根据本发明的一个方面,提供了一种内存的清理方法。
根据本发明实施例的内存的清理方法包括:获取第一应用进程在多次运行过程中同时运行的多个应用进程;从多个应用进程中选取部分应用进程,其中,部分应用进程是根据多个应用进程中每个应用进程在多次运行过程中的运行概率确定的;对与部分应用进程对应的第一内存页集合进行清理。
优选地,从多个应用进程中选取部分应用进程包括:获取第一应用进程的在多次运行过程中的第一运行次数;获取每个应用进程在多次运行过程中的第二运行次数;通过第二运行次数与第一运行次数的比值计算运行概率;按照运行概率由低到高的次序选取部分应用进程。
优选地,在从多个应用进程中选取部分应用进程之前,还包括:在多次运行过程中获取未包含在多个应用进程中的其他应用进程对应的第二内存页集合;对获取到的第二内存页集合进行清理。
优选地,对与部分应用进程对应的第一内存页集合进行清理包括:获取待清理的第三内存页集合,其中,第三内存页集合包含第一内存页集合且第三内存页集合与第二内存页集合互为补集;根据部分应用进程从第三内存页集合中选取第一内存页集合进行清理,其中,在每次清理过程中采用LRU算法从第一内存页集合中选取一个内存页作为清理对象。
优选地,在对与部分应用进程对应的第一内存页集合进行清理之后,还包括:判断在从第三内存页集合中清理出第一内存页集合后得到的内存空间是否满足预设条件;如果否,则需要在从多个应用进程中屏蔽掉部分应用进程后,继续从剩余的应用进程中反复按照运行概率由低到高的次序选取一个或多个应用进程,直至满足预设条件;对再次选取出的一个或多个应用进程对应的第四内存页集合进行清理。
根据本发明的另一方面,提供了一种内存的清理装置。
根据本发明实施例的内存的清理装置包括:第一获取模块,用于获取第一应用进程在多次运行过程中同时运行的多个应用进程;第一选取模块,用于从多个应用进程中选取部分应用进程,其中,部分应用进程是根据多个应用进程中每个应用进程在多次运行过程中的运行概率确定的;第一清理模块,用于对与部分应用进程对应的第一内存页集合进行清理。
优选地,第一选取模块包括:第一获取单元,用于获取第一应用进程的在多次运行过程中的第一运行次数;第二获取单元,用于获取每个应用进程在多次运行过程中的第二运行次数;计算单元,用于通过第二运行次数与第一运行次数的比值计算运行概率;选取单元,用于按照运行概率由低到高的次序选取部分应用进程。
优选地,上述装置还包括:第二获取模块,用于在多次运行过程中获取未包含在多个应用进程中的其他应用进程对应的第二内存页集合;第二清理模块,用于对获取到的第二内存页集合进行清理。
优选地,第一清理模块包括:第三获取单元,用于获取待清理的第三内存页集合,其中,第三内存页集合包含第一内存页集合且第三内存页集合与第二内存页集合互为补集;清理单元,用于根据部分应用进程从第三内存页集合中选取第一内存页集合进行清理,其中,在每次清理过程中采用LRU算法从第一内存页集合中选取一个内存页作为清理对象。
优选地,上述装置还包括:判断模块,用于判断在从第三内存页集合中清理出第一内存页集合后得到的内存空间是否满足预设条件;第二选取模块,用于在判断模块输出为否时,则需要在从多个应用进程中屏蔽掉部分应用进程后,继续从剩余的应用进程中反复按照运行概率由低到高的次序选取一个或多个应用进程,直至满足预设条件;第三清理模块,用于对再次选取出的一个或多个应用进程对应的第四内存页集合进行清理。
通过本发明实施例,采用获取第一应用进程在多次运行过程中同时运行的多个应用进程;从多个应用进程中选取部分应用进程,其中,部分应用进程是根据多个应用进程中每个应用进程在多次运行过程中的运行概率确定的;对与部分应用进程对应的第一内存页集合进行清理,解决了相关技术中所提供的内存清理方式没有考虑应用进程之间的依赖性的问题,进而加强了内存清理的有效性,提升了系统的反应速度。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的内存的清理方法的流程图;
图2是根据本发明优选实施例的内存清理过程的流程图;
图3是根据本发明优选实施例的统计数据结构的示意图;
图4是根据本发明实施例的内存的清理装置的结构框图;
图5是根据本发明优选实施例的内存的清理装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1是根据本发明实施例的内存的清理方法的流程图。如图1所示,该方法可以包括以下处理步骤:
步骤S102:获取第一应用进程在多次运行过程中同时运行的多个应用进程;
步骤S104:从多个应用进程中选取部分应用进程,其中,部分应用进程是根据多个应用进程中每个应用进程在多次运行过程中的运行概率确定的;
步骤S106:对与部分应用进程对应的第一内存页集合进行清理。
相关技术中所提供的内存清理方式没有考虑应用进程之间的依赖性。采用如图1所示的方法,通过其他应用进程在第一应用进程的多次运行过程中的运行概率确定第一应用进程与其他各个应用进程之间的依赖关系,进而能够根据依赖关系选取部分应用进程对应的内存页加以清理。由此解决了相关技术中所提供的内存清理方式没有考虑应用进程之间的依赖性的问题,进而加强了内存清理的有效性,提升了系统的反应速度。
优选地,在步骤S104中,从多个应用进程中选取部分应用进程可以包括以下操作:
步骤S1:获取第一应用进程的在多次运行过程中的第一运行次数;
步骤S2:获取每个应用进程在多次运行过程中的第二运行次数;
步骤S3:通过第二运行次数与第一运行次数的比值计算运行概率;
步骤S4:按照运行概率由低到高的次序选取部分应用进程。
在应用进程处于前台运行期间,对系统访问的每个内存页分别获取该内存页所归属的应用进程,再判断所有这些应用进程是否均属于前台运行的应用进程所依赖的应用进程集合。然而,此种方式的缺陷在于可能会存在不相关的应用进程同样在这段时间内并行运行,从而易导致将其也误认为是依赖应用。对此,可以采取统计概率的方法来减少上述缺陷的副作用;其基本思想举例如下:假设应用进程A在运行过程中依赖于应用进程B,而应用进程C则是一个与应用进程A完全无关的应用进程。经过多次统计应用进程A在前台运行时所依赖的应用进程集合,由于应用进程A依赖于应用进程B,则应用进程A在每次运行时均需要运行应用进程B,因此,应用进程A每次在前台运行期间所获得的依赖应用进程集合中必然会包含应用进程B,而对于应用进程C而言,由于其为一个与应用进程A完全无关的应用进程,它只是碰巧应用进程A在前台运行期间并发运行的情况下才被包含在应用进程A的所依赖应用进程集合中。由于应用进程C与应用进程A不具有相关性,故而从统计概率(被包含在应用进程A所依赖的应用进程集合中的次数/应用进程A在前台运行的次数)的角度出发,这种碰巧并行运行的次数不会多次发生。因此,从统计概率角度考虑可以发现如下规律:统计概率越高,这个应用进程为特定应用进程的依赖应用的可能性就越大。在进行内存清理时,首先从对当前前台运行的应用进程所依赖的应用进程集合中统计概率较低的应用进程所归属的内存页加以清理,由此可以在很大程度上避免了将前台应用进程的依赖应用进程执行误清理。
优选地,在步骤S104,从多个应用进程中选取部分应用进程之前,还可以包括以下步骤:
步骤S5:在多次运行过程中获取未包含在多个应用进程中的其他应用进程对应的第二内存页集合;
步骤S6:对获取到的第二内存页集合进行清理。
在优选实施例中,如果发现在第一应用进程的多次运行过程中存在部分应用进程始终都没有运行(没有被访问),那么由此可以断定这些应用进程与第一应用进程之间不存在关联性,因此,可以直接将这部分不存在关联性的应用进程所对应的内存页加以清理进而腾出内存空间供其他用途使用。假设应用进程A在运行过程中依赖于应用进程B,而应用进程C和应用进程D则是与应用进程A完全无关的应用进程。经过多次统计应用进程A在前台运行时所依赖的应用进程集合,由于应用进程A依赖于应用进程B,则应用进程A在每次运行时均需要运行应用进程B,因此,应用进程A每次在前台运行期间所获得的依赖应用进程集合中必然会包含应用进程B,而对于应用进程C而言,由于其为一个与应用进程A完全无关的应用进程,它只是碰巧应用进程A在前台运行期间并发运行的情况下才被包含在应用进程A的所依赖应用进程集合中。至于应用进程D,在应用进程A的前台运行期间始终都没有参与运行,故而在内存清理过程中,首先应当将应用进程D所对应的内存页作为清理对象,其次是将应用进程C所对应的内存页作为清理对象,然后才是将应用进程B所对应的内存页作为清理对象。
优选地,在步骤S106中,对与部分应用进程对应的第一内存页集合进行清理可以包括以下操作:
步骤S7:获取待清理的第三内存页集合,其中,第三内存页集合包含第一内存页集合且第三内存页集合与第二内存页集合互为补集;
步骤S8:根据部分应用进程从第三内存页集合中选取第一内存页集合进行清理,其中,在每次清理过程中采用LRU算法从第一内存页集合中选取一个内存页作为清理对象。
参照上述示例,由于经过多次统计应用进程A在前台运行时所依赖的应用进程集合,由于应用进程A依赖于应用进程B,则应用进程A在每次运行时均需要运行应用进程B,因此,应用进程A每次在前台运行期间所获得的依赖应用进程集合中必然会包含应用进程B,而对于应用进程C而言,由于其为一个与应用进程A完全无关的应用进程,它只是碰巧应用进程A在前台运行期间并发运行的情况下才被包含在应用进程A的所依赖应用进程集合中。至于应用进程D,在应用进程A的前台运行期间始终都没有参与运行。故而上述应用进程B和应用进程C合在一起对应第三内存页集合,应用进程C单独对应第一内存页集合,而应用进程D则对应第二内存页集合。在内存清理过程中,首先应当将应用进程D所对应的第二内存页集合作为清理对象,其次是将应用进程C所对应的第一内存页集合作为清理对象,然后才是将应用进程B所对应的在从第三内存页集合中屏蔽掉第一内存页集合之后剩余的内存页作为清理对象。
优选地,在步骤S106,对与部分应用进程对应的第一内存页集合进行清理之后,还可以包括以下步骤:
步骤S9:判断在从第三内存页集合中清理出第一内存页集合后得到的内存空间是否满足预设条件;
步骤S10:如果否,则需要在从多个应用进程中屏蔽掉部分应用进程后,继续从剩余的应用进程中反复按照运行概率由低到高的次序选取一个或多个应用进程,直至满足预设条件;
步骤S11:对再次选取出的一个或多个应用进程对应的第四内存页集合进行清理。
下面将结合图2所示的优选实施方式对上述优选实施过程作进一步的描述。
图2是根据本发明优选实施例的内存清理过程的流程图。如图2所示,该流程可以包括以下处理步骤:
步骤S202:当应用进程A切换至前台运行时,记录此时前台应用进程名称为A;
步骤S204:等待事件发生;如果发生内存清理事件,则继续执行步骤S206;
步骤S206-步骤S208:当发生内存清理事件需要进行内存清理时,判断应用进程A在前台运行的次数是否已经达到第一预设阈值;如果是,则继续执行步骤S210;如果否,则转到步骤S236;
步骤S210:按照LRU算法从候选内存页中选取一个需要清理的内存页;
步骤S212:判断是否能够选择出一个需要清理的内存页;如果是,则继续执行步骤S214;如果否,则转到步骤S222;
步骤S214:判断该内存页是否属于应用进程A所依赖的应用进程集合;如果该内存页不属于应用进程A所依赖的应用进程集合,则继续执行步骤S216;如果该内存页属于应用进程A所依赖的应用进程集合,则继续执行步骤S220;
步骤S216:将该内存页标记为可以清理,从LRU的内存页集合中删除该内存页,
步骤S218:判断是否清理出足够的内存;如果是,则继续执行步骤S242;如果否,则返回步骤S210;
步骤S220:在候选内存页中暂时屏蔽掉该内存页;返回步骤S210;
步骤S222:恢复候选内存页集合中暂时屏蔽的内存页,得到集合T;
步骤S224:从应用进程A的应用进程依赖集合中选择依赖度最低的应用进程;
步骤S226:从应用进程A的应用进程依赖集合中暂时屏蔽掉已经选出的应用进程;
步骤S228:从集合T中选取属于上述依赖度最低的应用进程的内存页集合S;
步骤S230:判断集合S是否为空;如果否,则继续执行步骤S232;如果是,则返回步骤S224;
步骤S232:从集合S中按照LRU算法选出一个内存页作为可清理对象,并从集合S和集合T中删除该内存页;
步骤S234:判断是否已经清理出足够的内存;如果是,则继续执行步骤S242;如果否,则返回步骤S228;
步骤S236:按照标准LRU算法选择需要清理出足够的内存页;继续执行步骤S242;
在该优选实施例中,首先在应用进程A所依赖的应用进程集合中选出依赖度最低的应用进程,然后从LRU的内存页集合中选择属于该应用进程的内存页,然后再将这些内存页按照LRU的顺序依次选出标记为可以清理,直至内存清理足够为止;
步骤S238-步骤S240:如果发生内存访问事件,查询访问的内存页所归属的应用进程,如果该应用进程已经存在于应用进程A所依赖的应用进程集合中,则将其对应的依赖度值加1,否则将其添加到应用进程A所依赖的应用进程集合中,并将其依赖度值设置为1;
步骤S242:判断应用进程A是否从前台退出;如果是,则继续执行步骤S244;如果否,则返回步骤S204;
步骤S244:如果应用进程A被切换出前台,则需要将应用进程A在前台运行次数加1;
步骤S246:判断应用进程A在前台运行的次数是否已经超过第二预设阈值;如果是,则继续执行步骤S248;如果否,则转到步骤S250;
步骤S248:更新统计数据,丢弃部分旧的统计数据(例如:将运行次数值、应用进程A所依赖的应用进程集合中所有应用进程的依赖度值按照预设百分比值(P)加以缩小);
步骤S250:对统计数据进行存储,流程结束。
作为本发明的一个优选实施例,本发明实施例所提供的技术方案可以在安卓(Android)系统上加以实现。在Android系统中,ActivityManagerService负责应用进程前台与后台之间的切换控制,linux内核负责内存实际清理和内存访问控制。在Android上的优选实施流程如下:
步骤1)ActivityManagerService在切换应用进程时,需要向Linux内核发送一条消息,以说明当前应用进程的ID;
步骤2)图3是根据本发明优选实施例的统计数据结构的示意图。如图3所示,Linux内核在接收到来自于ActivityManagerService的消息之后,将该应用进程所对应的统计数据结构加载到内存中,其中,统计数据结构可以包括:一个前台运行的应用进程ID所依赖的多个应用进程ID以及每个依赖应用进程所对应的运行次数;
步骤3)当Linux内核从其inactive的内存页链表中选择要清理的内存页时,如果当前应用进程的统计数据结构中的运行次数未达到第一预设阈值,转到步骤11);否则,转到步骤4);
步骤4)Linux内核从其inactive的内存页链表中按照LRU算法选出一个内存页,如果能够选出内存页,转到步骤5);否则,转到步骤8);
步骤5)查询已经选出的内存页所归属的应用进程ID,如果当前应用统计数据结构的依赖应用进程集合中不包含该内存页所归属的应用进程ID,则将该内存页标记为可以清理,转到步骤6);否则,转到步骤7);
步骤6)如果还需要继续清理内存,转到步骤3);否则,转到步骤12);
步骤7)跳过这个内存页,转到步骤3);
步骤8)从当前应用统计数据结构中选取“依赖次数”最少的依赖应用进程ID,然后从inactive的内存页链表中取出所有属于该依赖应用进程ID的内存页;
步骤9)从步骤8)中获得的内存页按照LRU顺序选出一个内存页,将其标记为可清理,直至清理内存达到目标值为止,转到步骤12);如果所有步骤8)中获得的内存页清理完都无法达到目标值,则转到步骤10);
步骤10)从当前应用统计数据结构中排除掉在步骤8)中选取的“依赖次数”最少的依赖应用进程ID,转到步骤8);
步骤11)Linux内核从其inactive的内存页链表中按LRU算法选出内存页,直到达到清理内存的目标值为止;
步骤12)如果发生了内存访问事件,转到步骤13);否则,转到步骤14);
步骤13)查询访问的内存页所属的应用进程ID,如果这个应用进程ID已经在统计数据结构中,则只对其对应的依赖次数值加1,否则将这个应用进程ID添加至当前应用进程的统计数据结构中,并将其对应的依赖次数值设置为1。对依赖次数值的另一种优化方式是,如果这个应用进程ID的依赖次数值已经被加1,则以后将不再增加;
步骤14)如果发生了当前应用进程退出前台运行的事件,转到步骤15);否则,转到步骤3);
步骤15)将当前应用进程统计数据结构中的运行次数值加1,如果这个值大于第二预设阈值,则转到步骤16),否则,转到步骤17);
步骤16)将当前应用统计数据结构中的运行次数值按照比例P进行缩减,将当前应用进程统计数据结构中的所有依赖次数值按照比例P进行缩减;
步骤17)对当前应用进程统计数据结构进行存储;流程结束。
图4是根据本发明实施例的内存的清理装置的结构框图。如图4所示,该内存的清理装置可以包括:第一获取模块10,用于获取第一应用进程在多次运行过程中同时运行的多个应用进程;第一选取模块20,用于从多个应用进程中选取部分应用进程,其中,部分应用进程是根据多个应用进程中每个应用进程在多次运行过程中的运行概率确定的;第一清理模块30,用于对与部分应用进程对应的第一内存页集合进行清理。
采用如图4所示的装置,解决了相关技术中所提供的内存清理方式没有考虑应用进程之间的依赖性的问题,进而加强了内存清理的有效性,提升了系统的反应速度。
优选地,如图5所示,第一选取模块20可以包括:第一获取单元200,用于获取第一应用进程的在多次运行过程中的第一运行次数;第二获取单元202,用于获取每个应用进程在多次运行过程中的第二运行次数;计算单元204,用于通过第二运行次数与第一运行次数的比值计算运行概率;选取单元206,用于按照运行概率由低到高的次序选取部分应用进程。
优选地,如图5所示,上述装置还可以包括:第二获取模块40,用于在多次运行过程中获取未包含在多个应用进程中的其他应用进程对应的第二内存页集合;第二清理模块50,用于对获取到的第二内存页集合进行清理。
优选地,如图5所示,第一清理模块30可以包括:第三获取单元300,用于获取待清理的第三内存页集合,其中,第三内存页集合包含第一内存页集合且第三内存页集合与第二内存页集合互为补集;清理单元302,用于根据部分应用进程从第三内存页集合中选取第一内存页集合进行清理,其中,在每次清理过程中采用LRU算法从第一内存页集合中选取一个内存页作为清理对象。
优选地,如图5所示,上述装置还可以包括:判断模块60,用于判断在从第三内存页集合中清理出第一内存页集合后得到的内存空间是否满足预设条件;第二选取模块70,用于在判断模块输出为否时,则需要在从多个应用进程中屏蔽掉部分应用进程后,继续从剩余的应用进程中反复按照运行概率由低到高的次序选取一个或多个应用进程,直至满足预设条件;第三清理模块,用于对再次选取出的一个或多个应用进程对应的第四内存页集合进行清理。
从以上的描述中,可以看出,上述实施例实现了如下技术效果(需要说明的是这些效果是某些优选实施例可以达到的效果):采用本发明实施例所提供的技术方案,能够在相关技术中所提供的内存清理方式的基础上充分考虑应用进程之间的依赖性,进而加强了内存清理的有效性,提升了系统的反应速度。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种内存的清理方法,其特征在于,包括:
获取第一应用进程在多次运行过程中同时运行的多个应用进程;
从所述多个应用进程中选取部分应用进程,其中,所述部分应用进程是根据所述多个应用进程中每个应用进程在所述多次运行过程中的运行概率确定的;
对与所述部分应用进程对应的第一内存页集合进行清理;
其中,从所述多个应用进程中选取所述部分应用进程包括:获取所述第一应用进程的在所述多次运行过程中的第一运行次数;获取所述每个应用进程在所述多次运行过程中的第二运行次数;通过所述第二运行次数与所述第一运行次数的比值计算所述运行概率;按照所述运行概率由低到高的次序选取所述部分应用进程。
2.根据权利要求1所述的方法,其特征在于,在从所述多个应用进程中选取所述部分应用进程之前,还包括:
在所述多次运行过程中获取未包含在所述多个应用进程中的其他应用进程对应的第二内存页集合;
对获取到的第二内存页集合进行清理。
3.根据权利要求1所述的方法,其特征在于,对与所述部分应用进程对应的第一内存页集合进行清理包括:
获取待清理的第三内存页集合,其中,所述第三内存页集合包含所述第一内存页集合且所述第三内存页集合与第二内存页集合互为补集;
根据所述部分应用进程从所述第三内存页集合中选取所述第一内存页集合进行清理,其中,在每次清理过程中采用最近最久未使用LRU算法从所述第一内存页集合中选取一个内存页作为清理对象;
其中,所述第二内存页集合是未包含在所述多个应用进程中的其他应用进程对应的第二内存页集合。
4.根据权利要求3所述的方法,其特征在于,在对与所述部分应用进程对应的第一内存页集合进行清理之后,还包括:
判断在从所述第三内存页集合中清理出所述第一内存页集合后得到的内存空间是否满足预设条件;
如果否,则需要在从所述多个应用进程中屏蔽掉所述部分应用进程后,继续从剩余的应用进程中反复按照所述运行概率由低到高的次序选取一个或多个应用进程,直至满足所述预设条件;
对再次选取出的一个或多个应用进程对应的第四内存页集合进行清理。
5.一种内存的清理装置,其特征在于,包括:
第一获取模块,用于获取第一应用进程在多次运行过程中同时运行的多个应用进程;
第一选取模块,用于从所述多个应用进程中选取部分应用进程,其中,所述部分应用进程是根据所述多个应用进程中每个应用进程在所述多次运行过程中的运行概率确定的;
第一清理模块,用于对与所述部分应用进程对应的第一内存页集合进行清理;
其中,所述第一选取模块包括:第一获取单元,用于获取所述第一应用进程的在所述多次运行过程中的第一运行次数;第二获取单元,用于获取所述每个应用进程在所述多次运行过程中的第二运行次数;计算单元,用于通过所述第二运行次数与所述第一运行次数的比值计算所述运行概率;选取单元,用于按照所述运行概率由低到高的次序选取所述部分应用进程。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在所述多次运行过程中获取未包含在所述多个应用进程中的其他应用进程对应的第二内存页集合;
第二清理模块,用于对获取到的第二内存页集合进行清理。
7.根据权利要求5所述的装置,其特征在于,所述第一清理模块包括:
第三获取单元,用于获取待清理的第三内存页集合,其中,所述第三内存页集合包含所述第一内存页集合且所述第三内存页集合与第二内存页集合互为补集;
清理单元,用于根据所述部分应用进程从所述第三内存页集合中选取所述第一内存页集合进行清理,其中,在每次清理过程中采用最近最久未使用LRU算法从所述第一内存页集合中选取一个内存页作为清理对象;
其中,所述第二内存页集合是未包含在所述多个应用进程中的其他应用进程对应的第二内存页集合。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
判断模块,用于判断在从所述第三内存页集合中清理出所述第一内存页集合后得到的内存空间是否满足预设条件;
第二选取模块,用于在所述判断模块输出为否时,则需要在从所述多个应用进程中屏蔽掉所述部分应用进程后,继续从剩余的应用进程中反复按照所述运行概率由低到高的次序选取一个或多个应用进程,直至满足所述预设条件;
第三清理模块,用于对再次选取出的一个或多个应用进程对应的第四内存页集合进行清理。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410351366.3A CN105279098B (zh) | 2014-07-22 | 2014-07-22 | 内存的清理方法及装置 |
US15/327,039 US20170262224A1 (en) | 2014-07-22 | 2015-03-24 | Memory Cleaning Method and Apparatus |
EP15803631.9A EP3196763A4 (en) | 2014-07-22 | 2015-03-24 | Memory cleaning method and apparatus |
PCT/CN2015/074985 WO2015184909A1 (zh) | 2014-07-22 | 2015-03-24 | 内存的清理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410351366.3A CN105279098B (zh) | 2014-07-22 | 2014-07-22 | 内存的清理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105279098A CN105279098A (zh) | 2016-01-27 |
CN105279098B true CN105279098B (zh) | 2019-02-12 |
Family
ID=54766131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410351366.3A Active CN105279098B (zh) | 2014-07-22 | 2014-07-22 | 内存的清理方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170262224A1 (zh) |
EP (1) | EP3196763A4 (zh) |
CN (1) | CN105279098B (zh) |
WO (1) | WO2015184909A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808447B (zh) * | 2016-03-29 | 2019-01-29 | 海信集团有限公司 | 一种终端设备的内存回收方法和装置 |
CN105843650B (zh) * | 2016-03-31 | 2020-03-31 | 青岛海信移动通信技术股份有限公司 | 一种智能终端中的应用程序管理方法和装置 |
CN105975400B (zh) * | 2016-04-27 | 2019-06-04 | 北京金山安全软件有限公司 | 一种空间管理方法、装置及电子设备 |
CN106528298A (zh) * | 2016-12-29 | 2017-03-22 | 努比亚技术有限公司 | 一种资源分配方法及装置 |
CN107145392A (zh) * | 2017-04-26 | 2017-09-08 | 努比亚技术有限公司 | 一种优化内存的方法及设备 |
CN107463403B (zh) * | 2017-07-31 | 2020-04-21 | Oppo广东移动通信有限公司 | 进程控制方法、装置、存储介质以及电子设备 |
CN108228472B (zh) * | 2017-08-14 | 2021-08-13 | 珠海市魅族科技有限公司 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
WO2019061060A1 (zh) * | 2017-09-27 | 2019-04-04 | 深圳传音通讯有限公司 | 进程查杀方法及装置 |
WO2019061184A1 (zh) * | 2017-09-28 | 2019-04-04 | 深圳传音通讯有限公司 | 一种进程清理方法及相关设备 |
CN107734616B (zh) * | 2017-10-31 | 2021-01-15 | Oppo广东移动通信有限公司 | 应用程序关闭方法、装置、存储介质和电子设备 |
CN110018902B (zh) * | 2018-01-10 | 2023-01-31 | Oppo广东移动通信有限公司 | 内存处理方法和装置、电子设备、计算机可读存储介质 |
CN109358955A (zh) * | 2018-09-27 | 2019-02-19 | 联想(北京)有限公司 | 进程管理方法和装置 |
CN111651277B (zh) * | 2020-06-11 | 2024-03-26 | 深圳创维-Rgb电子有限公司 | 一种内存的清理方法、智能终端及可读存储介质 |
CN111756922A (zh) * | 2020-06-15 | 2020-10-09 | 北京智明星通科技股份有限公司 | 一种手机游戏的运行方法、系统及游戏终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756912B2 (en) * | 2007-09-28 | 2010-07-13 | Oracle America, Inc. | Method and system for minor garbage collection in a multitasking environment |
CN102479108A (zh) * | 2010-11-26 | 2012-05-30 | 中国科学院声学研究所 | 一种多应用进程的嵌入式系统终端资源管理系统及方法 |
CN103092700A (zh) * | 2013-02-01 | 2013-05-08 | 华为终端有限公司 | 内存清理方法、装置和终端设备 |
CN103838630A (zh) * | 2014-03-03 | 2014-06-04 | 联想(北京)有限公司 | 信息处理方法、系统及电子设备 |
CN103914322A (zh) * | 2013-01-05 | 2014-07-09 | 腾讯科技(深圳)有限公司 | 终端加速方法及终端 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US9201810B2 (en) * | 2012-01-26 | 2015-12-01 | Microsoft Technology Licensing, Llc | Memory page eviction priority in mobile computing devices |
JP5998764B2 (ja) * | 2012-09-04 | 2016-09-28 | 富士通株式会社 | 情報処理装置、ログ出力方法およびログ出力プログラム |
-
2014
- 2014-07-22 CN CN201410351366.3A patent/CN105279098B/zh active Active
-
2015
- 2015-03-24 WO PCT/CN2015/074985 patent/WO2015184909A1/zh active Application Filing
- 2015-03-24 US US15/327,039 patent/US20170262224A1/en not_active Abandoned
- 2015-03-24 EP EP15803631.9A patent/EP3196763A4/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756912B2 (en) * | 2007-09-28 | 2010-07-13 | Oracle America, Inc. | Method and system for minor garbage collection in a multitasking environment |
CN102479108A (zh) * | 2010-11-26 | 2012-05-30 | 中国科学院声学研究所 | 一种多应用进程的嵌入式系统终端资源管理系统及方法 |
CN103914322A (zh) * | 2013-01-05 | 2014-07-09 | 腾讯科技(深圳)有限公司 | 终端加速方法及终端 |
CN103092700A (zh) * | 2013-02-01 | 2013-05-08 | 华为终端有限公司 | 内存清理方法、装置和终端设备 |
CN103838630A (zh) * | 2014-03-03 | 2014-06-04 | 联想(北京)有限公司 | 信息处理方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2015184909A1 (zh) | 2015-12-10 |
EP3196763A1 (en) | 2017-07-26 |
EP3196763A4 (en) | 2017-07-26 |
CN105279098A (zh) | 2016-01-27 |
US20170262224A1 (en) | 2017-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105279098B (zh) | 内存的清理方法及装置 | |
CN105656962A (zh) | 一种服务调用方法和装置 | |
CN105045819A (zh) | 一种训练数据的模型训练方法及装置 | |
CN106503008B (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CN109358873A (zh) | 一种应用程序更新方法、存储介质和终端设备 | |
CN107040950A (zh) | 一种wifi设备的管理方法和一种wifi设备 | |
CN105892941A (zh) | 垃圾回收方法、垃圾回收装置和电子设备 | |
CN106802927A (zh) | 一种数据存储方法及查询方法 | |
CN109165135B (zh) | 一种数据管理方法、计算机可读存储介质及终端设备 | |
CN102929943B (zh) | 数据输出方法及装置 | |
CN108073641A (zh) | 查询数据表的方法和装置 | |
CN107526541B (zh) | 数据处理方法和装置 | |
CN111782645B (zh) | 数据处理方法和装置 | |
CN103139322B (zh) | 用于识别在通信网络中组合的设备的方法 | |
CN111258968A (zh) | 企业冗余数据清理方法、装置及大数据平台 | |
CN107526690A (zh) | 清除缓存的方法及装置 | |
CN115860278A (zh) | 一种基于数据分析的电机组装生产管理方法及系统 | |
CN107589907A (zh) | 数据处理方法、电子设备及计算机可读存储介质 | |
CN102981856B (zh) | 基于网络的程序计算结果存储与检索方法及系统 | |
CN111090513B (zh) | 车联网平台终端链路健康状态的检测方法及存储介质 | |
CN100444554C (zh) | 一种降低远程网络监控资源消耗的方法 | |
CN107609194A (zh) | 一种面向云计算的时间冗余电力负荷数据的存储方法 | |
CN108650222B (zh) | 基于拉伸过滤的防火墙规则更新方法及其系统 | |
CN110420458A (zh) | 游戏请求处理方法及装置 | |
CN113467894B (zh) | 一种通信负载均衡方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |