进程的内存回收方法及装置的制造方法

文档序号:8942936阅读:178来源:国知局
进程的内存回收方法及装置的制造方法
【技术领域】
[0001]本发明实施例涉及内存管理技术,尤其涉及一种进程的内存回收方法及装置。
【背景技术】
[0002]随着终端中运行的软件数量的提高,软件占用的内存也随之增加。由于现有系统均支持多进程的并行操作,因此当运行的进程占用的内存达到预定阈值时,系统启动内存回收,以便为新的进程提供足够的内存。
[0003]目前,安卓系统中会通过杀死进程回收进程资源,来节省内存。但是在关闭进程回收了进程的所有资源后,当再次打开需要被关闭的进程时,需要重新申请内存等操作,造成耗时。

【发明内容】

[0004]本发明提供一种进程的内存回收方法及装置,以实现回收内存的同时,保证各进程正常执行,提高内存的利用率,尤其在内存剩余量较少情况下。
[0005]第一方面,本发明实施例提供了一种进程的内存回收方法,包括:
[0006]获取目标进程对应的至少一个物理页;
[0007]从所述至少一个物理页中,查找未被所述目标进程使用的目标物理页;
[0008]回收所述目标物理页。
[0009]第二方面,本发明实施例还提供了一种进程的内存回收装置,包括:
[0010]物理页获取单元,用于获取目标进程对应的至少一个物理页;
[0011]目标物理页查找单元,用于从所述物理页获取单元获取的所述至少一个物理页中,查找未被所述目标进程使用的目标物理页;
[0012]目标物理页回收单元,用于回收所述目标物理页查找单元查找到的所述目标物理页。
[0013]本发明能够将目标进程未使用的目标物理页进行回收,因此在不妨碍目标进程运行的同时,实现目标物理页的回收,减少耗时,提高资源利用率。
【附图说明】
[0014]图1本发明实施例一中的一个进程的内存回收方法的流程图;
[0015]图2是本发明实施例二中的第一个进程的内存回收方法的流程图;
[0016]图3是本发明实施例二中的第二个进程的内存回收方法的流程图;
[0017]图4是本发明实施例二中的第三个进程的内存回收方法的流程图;
[0018]图5是本发明实施例二中的第二个进程的内存回收方法的流程图;
[0019]图6是本发明实施例三中的第一个进程的内存回收装置的结构示意图;
[0020]图7是本发明实施例三中的第一个进程的内存回收装置的结构示意图;
[0021]图8是本发明实施例三中的第一个进程的内存回收装置的结构示意图;
[0022]图9是本发明实施例三中的第一个进程的内存回收装置的结构示意图;
[0023]图10是本发明实施例三中的第一个进程的内存回收装置的结构示意图。
【具体实施方式】
[0024]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0025]实施例一
[0026]图1为本发明实施例一提供的进程的内存回收方法的流程图,本实施例可适用于当内存压力达到一定阈值需要进行内存回收的情况,该方法可以由具有内存处理能力的电子设备来执行,如智能手机、平板电脑、个人电脑(Personal Computer, PC),智能穿戴设备等,该方法具体包括如下步骤:
[0027]步骤110、获取目标进程对应的至少一个物理页。
[0028]目标进程为电子设备后台运行的任意进程。根据后台运行的各进程进入后台的时间和进程优先级来综合确定出目标进程。例如:将第一个后台进程确定为目标进程,执行步骤110至步骤130,然后将第二个后台进程确定为目标进程,执行步骤110至步骤130,以此类推,直至最后一个后台进程。在上述循环过程中,当回收的内存量到达一定阈值时,可结束将当前目标进程的下一个进程确定为目标进程。也可根据一定的周期,定时对后台进程进行内存回收,对每个后台进程执行步骤110至步骤130。
[0029]目标进程运行过程中使用的数据会存放在物理页中,而目标进程在进行编程时往往使用逻辑地址进行编码,因此可通过页表将逻辑地址与物理地址进行转换。逻辑地址指向逻辑页,物理地址指向物理页。因此可通过页表找到目标进程对应的至少一个物理页。
[0030]步骤120、从至少一个物理页中,查找未被目标进程使用的目标物理页。
[0031 ]目标物理页为未被所述目标进程使用的物理页。未被所述目标进程使用指目标进程没有引用目标物理页,也没有对目标物理页进行修改。
[0032]步骤130、回收目标物理页。
[0033]可通过释放目标物理页的方式进行回收。将目标物理页释放后,目标物理页可被重新使用。
[0034]本实施例提供的技术方案,通过查找目标进程对应的物理页,并从物理页中找到未被目标进程使用的目标物理页,并回收目标物理页。现有技术中通过关闭进程实现内存回收。本实施例能够将目标进程未使用的目标物理页进行回收,因此在不妨碍目标进程运行的同时,实现目标物理页的回收,减少耗时,提高资源利用率。
[0035]实施例二
[0036]本方法实施例还提供了一种进程的内存回收方法,作为对上述实施例的进一步说明,步骤120、从至少一个物理页中,查找未被目标进程使用的目标物理页,可通过下述方式进行实施:
[0037]步骤121、从至少一个物理页中,查找至少一个非活动状态的匿名页。
[0038]物理页的活动状态分为活动(Active)状态和非活动(inActive)状态。活动状态表示物理页正在被访问或正在进行数据写入。非活动状态表示物理页目前未被访问,处于静置中。
[0039]物理页包括匿名页,匿名页可用于表示进程在用户模式下的堆栈等。从物理页中找到匿名页的实现方式可参照现有技术实施。
[0040]步骤122、从至少一个非活动状态的匿名页中,将引用计数为零的匿名页确定为目标物理页。
[0041]其中,所述引用计数用于表示使用所述物理页的进程数量。引用计数为零时,表示匿名页没有被进程引用。引用计数大于零时,表示有进程应用匿名页。例如,引用计数为3,则表示有三个进程引用了匿名页。引用计数是一个记录匿名页被引用次数的整数。当进程对匿名页进行引用时,匿名页的引用计数加I。当进程取消对匿名页的引用时,引用计数减
1
[0042]相应的,步骤130、回收目标物理页,可通过下述方式进行实施:
[0043]步骤131、将目标物理页放入交换区域。
[0044]匿名页被放入到交换(SWAP)区域后,可被重新使用。例如重新填入堆栈数据等。
[0045]本实施例提供的技术方案,能够从非活动状态的匿名页中,找到引用计数为零的匿名页,将其确定为目标物理页。在释放匿名页时,通过将其放入到交换区域中实现回收。实现对闲置的匿名页进行回收。
[0046]本发明实施例还提供了一种进程的内存回收方法,作为对上述实施例的进一步说明,如图3所示,在步骤121、从至少一个物理页中,查找至少一个非活动状态的匿名页之后,所述方法还包括:
[0047]步骤123、从至少一个非活动状态的匿名页中,查找引用计数大于零的匿名页。
[0048]步骤124、将引用计数大于零的匿名页的引用计数减一。
[0049]如果匿名页只被目标进程所引用,则其引用计数为I。如果匿名页除被目标进程引用外,还被其他进程引用,在引用计数大于I。如果引用计数为1,则进行减I操作后,引用计数为零。当目标进程再次执行内存回收操作(执行步骤110至步骤130)时,如果匿名页的引用计数为0,则回收匿名页。如果引用计数大于1,则进行减I操作后,如果目标进程以外的其他进程执行内存回收操作时,若涉及该匿名页,则再次对匿名页的引用计数进行减I操作。如果有N个其他进程执行了内存回收操作,且N个其他进程均引用了该匿名页,则该匿名页的引用计数减N,N为正整数。
[0050]本实施例提供的技术方案,能够当匿名页被引用时,通过减少匿名页的引用计数,使得再次执行内存回收操作时,能够对匿名页进行回收。且目标进程将匿名页回收后,其他引用该匿名页的进程不会因目标进程单方对匿名页进行回收而无法运行,保证其他进程的稳定性。
[0051]本发明实施例还提供了一种进程的内存回收方法,作为对上述实施例的进一步说明,如图4所示,步骤120、从至少一个物理页中,查找未被目标进程使用的目标物理页,可通过下述方式进行实施:
[0052]步骤121’、从至少一个物理页中,查找至少一个非活动状态的文件页。
[0053]物理页还包括文件页。由于物理页具有活动状态和非活动状态,因此文件页也具有活动状态和非活动状态。
[0054]步骤122’、将至少一个非活动状态的文件页中的干净页确定为目标物理页。
[0055]文件页分为脏(dirty)页和干净页(又称非脏页)。如果文件页中的数据被进程修改,则该文件页为脏页。若未被进程修改,则为干净页。修改文件页的进程不一定是目标进程,也可以是使用了该文件页的其他进程。
[0056]相应的,步骤130、回收目标物理页,可通过下述方式进行实施:
[0057]步骤131’、释放目标物理页。
[0058]本实施例提供的技术方案,能够从物理页中查找到非活动状态的文件页,将干净页的文件页确定为目标物理页,并释放目标物理页。实现对闲置的文件页的回收。
[0059]本发明实施例还提供了一种进程的内存回收方法,作为对上述实施例的进一步说明,步骤110、获取目标进程对应的至少一个物理页,可通过下述方式进行实施:
[0060]步骤101、获取目标进程对应的虚拟存储区域链表,虚拟存储区域链表由至少一个虚拟存储区域组成。
[0061]虚拟存储区域链表中,每个链表单元对应一个虚拟存储区域。虚拟存储区域包括起始地址和结束地址。
[0062]步骤102、对每个虚拟存储区域进行下述操作,以便获取与目标进程对应的至少一个物理页:
[0063]根据链表顺序,将从第一个虚拟存储区域至最后一个虚拟存储区域依次确定为当前虚拟存储区域。
[0064]102a、获取当前虚拟存储区域的起始地址和结束地址,起始地址指向当前存储区域中的第一个字节,结束地址指向当前存储区域中的最后一个字节。
[0065]102b、根据起始地址和结束地址确定虚拟存储区域对应的至少一个页表,页表用于记载虚拟页与物理页的对应关系。
[0066]102c、根据至
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1