内存回收方法和电子设备与流程

未命名 08-03 阅读:70 评论:0
内存回收方法和电子设备1.本技术要求于2022年01月19日提交国家知识产权局、申请号为202210062250.2、申请名称为“一种内存回收方法”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
:2.本技术涉及电子设备
技术领域
:,尤其涉及一种内存回收方法和电子设备。
背景技术
::3.电子设备每启动一个应用,就需要占用一定大小的内存,而电子设备中的内存是有限的,当电子设备中的可用内存较少时,容易出现运行卡顿甚至死机的情况,因此,大多数电子设备的操作系统都会采用内存回收机制,在适当的时候回收内存,以保证电子设备有足够的内存可用。4.目前,操作系统在回收内存时,普遍采用的是最近最少使用(leastrecentlyused,lru)算法。以linux为例,操作系统使用活跃页面链表(activepagelist)和非活跃页面链表(inactivepagelist)维护内存的物理页面(page);其中,活跃页面链表中存放最近经常被访问的处于活跃状态的物理页面,非活跃页面链表中存放最近不经常被访问的处于非活跃状态的物理页面。当操作系统回收内存时,可以将活跃页面链表中最近最少使用的一些页面移动到非活跃页面链表中,将非活跃页面链表中最近最少使用的一些页面回收。其中,一个物理页面可能对应多个虚拟内存区域(virtualmemoryarea,vma),对于扫描到的物理页面,操作系统会扫描该物理页面对应的各个vma和页表项(pagetableentry,pte),根据物理页面对应的各个vma的属性和各个pte的访问情况,决定是否将其从所在链表中移出。5.然而,目前的这种内存回收算法,页面扫描过程非常耗时,导致内存回收速度比较慢。技术实现要素:6.有鉴于此,本技术提供一种内存回收方法和电子设备,用于缩短页面扫描过程的耗时,提高内存回收速度。7.为了实现上述目的,第一方面,本技术实施例提供一种内存回收方法,包括:8.在内存回收过程中,对于扫描到的物理页面,检查所述物理页面的提前结束扫描状态,在所述物理页面的提前结束扫描状态为第一扫描状态的情况下,在每扫描完所述物理页面的一个虚拟内存区域vma或页表项pte后,判断所述物理页面的访问次数和/或vma属性是否达到提前结束扫描的目标要求;9.若所述物理页面的访问次数和/或vma属性达到目标要求,则结束所述物理页面的扫描流程,并将所述物理页面的提前结束扫描状态更新为第二扫描状态;10.其中,所述第一扫描状态用于指示所述物理页面在上一次的页面扫描过程中没有提前结束扫描流程,所述第二扫描状态用于指示所述物理页面在上一次的页面扫描过程中提前结束扫描流程。11.本技术实施例提供的内存回收方法,当物理页面处于第一扫描状态时,在扫描物理页面对应的vma和pte的过程中,在每扫描一个vma或pte后,判断物理页面的访问次数和/或vma属性是否达到目标要求,如果达到目标要求则结束该物理页面的扫描流程,这样就可以缩短页面扫描过程的耗时,从而提高内存回收速度;另外,在满足目标要求的情况下更新提前结束扫描状态为第二扫描状态,这样就可以根据提前结束扫描状态确定扫描物理页面的全部pte的时机,以满足pte访问记录的有效期要求。12.在第一方面的一种可能的实施方式中,所述方法还包括:13.对于扫描到的物理页面,在所述物理页面的提前结束扫描状态为第二扫描状态的情况下,在扫描完所述物理页面的全部vma和pte后,结束所述物理页面的扫描流程,并将所述物理页面的提前结束扫描状态更新为第一扫描状态。14.上述实施方式中,在扫描物理页面对应的vma和pte时,如果物理页面的提前结束扫描状态为第二扫描状态,即该物理页面在上一次该物理页面的页面扫描流程中提前结束,则在本次该物理页面的页面扫描过程中扫描该物理页面的全部pte,这样就可以对物理页面的各个pte进行访问记录的清除过程,满足pte访问记录的有效期要求。15.在第一方面的一种可能的实施方式中,所述物理页面位于活跃页面链表中,所述目标要求包括:所述物理页面的访问次数大于0,且所述物理页面为可执行的文件页。16.上述实施方式中,对于活跃页面链表中的物理页面,提前结束扫描流程对应的目标要求与将物理页面放回活跃页面链表所需满足的要求一致,这样可以减少对页面回收策略的影响。17.在第一方面的一种可能的实施方式中,所述物理页面为可执行的文件页包括:所述物理页面为文件页,且所述物理页面的至少一个vma具有可执行权限;18.所述检查所述物理页面的提前结束扫描状态,在所述物理页面的提前结束扫描状态为第一扫描状态的情况下,在每扫描完所述物理页面的一个虚拟内存区域vma或页表项pte后,判断所述物理页面的访问次数和/或vma属性是否达到提前结束扫描的目标要求,包括:19.检查所述物理页面的提前结束扫描状态,并判断所述物理页面是否是文件页;20.在确定所述物理页面的提前结束扫描状态为所述第一扫描状态,并且确定所述物理页面为文件页的情况下,在每扫描完所述物理页面的一个vma或pte后,判断是否满足所述物理页面的访问次数大于0,且所述物理页面的至少一个vma具有可执行权限。21.上述实施方式中,在扫描物理页面的vma和pte前,进行提前结束扫描状态的检查过程和文件页的判断过程,可以简化扫描过程中的判断流程,从而可以提升扫描速度。22.在第一方面的一种可能的实施方式中,所述物理页面位于非活跃页面链表中,所述目标要求包括:所述物理页面存在被锁的vma,或者,所述物理页面的访问次数大于1。23.上述实施方式中,对于非活跃页面链表中的物理页面,提前结束扫描流程对应的目标要求包括确定物理页面的回收策略时所考虑的各条件中优先级相对比较高的两个条件,这样可对页面回收策略的影响较小,从而在提升扫描速度的同时,可以获得较优的内存回收策略,进而可以进一步提升内存回收速度。24.在第一方面的一种可能的实施方式中,所述提前结束扫描状态是根据所述物理页面的目标状态标志位确定的。25.其中,该目标状态标识位可以位于物理页面的page结构体中,当该标志位置1时,可以表示物理页面在之前的页面扫描流程中提前结束;当该标志位置0时,可以表示物理页面在之前的页面扫描流程中没有提前结束。26.通过设置状态标志位,可以方便地确定物理页面的提前结束扫描状态。27.在第一方面的一种可能的实施方式中,所述若所述物理页面的访问次数和vma属性达到目标要求,则结束所述物理页面的扫描流程,并将所述物理页面的提前结束扫描状态更新为第二扫描状态,包括:28.若所述物理页面的访问次数和/或vma属性达到目标要求,则结束所述物理页面的扫描流程,并判断是否遍历完了所述物理页面的全部vma和pte;29.在未遍历完所述物理页面的全部vma和pte的情况下,将所述物理页面的提前结束扫描状态更新为第二扫描状态。30.上述实施方式中,在满足目标要求的情况下,判断是否遍历完该物理页面的全部vma和pte,在未遍历完该物理页面的全部vma和pte的情况下,更新提前结束扫描状态,这样可以使得在下次扫描该物理页面时,有可能提前结束扫描流程,从而提升下一次的页面扫描速度。31.在第一方面的一种可能的实施方式中,所述方法还包括:32.确定所述物理页面的回收策略,并执行所述回收策略。33.第二方面,本技术实施例提供一种内存回收装置,包括:34.扫描模块,用于在内存回收过程中,对于扫描到的物理页面,检查所述物理页面的提前结束扫描状态,在所述物理页面的提前结束扫描状态为第一扫描状态的情况下,在每扫描完所述物理页面的一个虚拟内存区域vma或页表项pte后,判断所述物理页面的访问次数和/或vma属性是否达到提前结束扫描的目标要求;35.处理模块,用于在所述物理页面的访问次数和/或vma属性达到目标要求的情况下,结束所述物理页面的扫描流程,并将所述物理页面的提前结束扫描状态更新为第二扫描状态;36.其中,所述第一扫描状态用于指示所述物理页面在上一次的页面扫描过程中没有提前结束扫描流程,所述第二扫描状态用于指示所述物理页面在上一次的页面扫描过程中提前结束扫描流程。37.在第二方面的一种可能的实施方式中,所述处理模块还用于:38.对于扫描到的物理页面,在所述物理页面的提前结束扫描状态为第二扫描状态的情况下,在所述扫描模块扫描完所述物理页面的全部vma和pte后,结束所述物理页面的扫描流程,并将所述物理页面的提前结束扫描状态更新为第一扫描状态。39.在第二方面的一种可能的实施方式中,所述物理页面位于活跃页面链表中,所述目标要求包括:所述物理页面的访问次数大于0,且所述物理页面为可执行的文件页。40.在第二方面的一种可能的实施方式中,所述物理页面为可执行的文件页包括:所述物理页面为文件页,且所述物理页面的至少一个vma具有可执行权限;41.所述扫描模块具体用于:42.检查所述物理页面的提前结束扫描状态,并判断所述物理页面是否是文件页;43.在确定所述物理页面的提前结束扫描状态为所述第一扫描状态,并且确定所述物理页面为文件页的情况下,在每扫描完所述物理页面的一个vma或pte后,判断是否满足所述物理页面的访问次数大于0,且所述物理页面的至少一个vma具有可执行权限。44.在第二方面的一种可能的实施方式中,所述物理页面位于非活跃页面链表中,所述目标要求包括:所述物理页面存在被锁的vma,或者,所述物理页面的访问次数大于1。45.在第二方面的一种可能的实施方式中,所述提前结束扫描状态是根据所述物理页面的目标状态标志位确定的。46.在第二方面的一种可能的实施方式中,所述处理模块具体用于:47.在所述物理页面的访问次数和/或vma属性达到目标要求的情况下,结束所述物理页面的扫描流程,并判断是否遍历完了所述物理页面的全部vma和pte;48.在未遍历完所述物理页面的全部vma和pte的情况下,将所述物理页面的提前结束扫描状态更新为第二扫描状态。49.在第二方面的一种可能的实施方式中,所述处理模块还用于:50.确定所述物理页面的回收策略,并执行所述回收策略。51.第三方面,本技术实施例提供一种电子设备,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行上述第一方面或第一方面的任一实施方式所述的方法。52.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面或第一方面的任一实施方式所述的方法。53.第五方面,本技术实施例提供一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面或第一方面的任一实施方式所述的方法。54.第六方面,本技术实施例提供一种芯片系统,包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现上述第一方面或第一方面的任一实施方式所述的方法。其中,所述芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。55.可以理解的是,上述第二方面至第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。附图说明56.图1为本技术实施例提供的内存回收方法的流程示意图;57.图2为本技术实施例提供的活跃页面链表的一种页面扫描和回收过程示意图;58.图3为本技术实施例提供的活跃页面链表的另一种页面扫描和回收过程示意图;59.图4为本技术实施例提供的非活跃页面链表的一种页面扫描和回收过程示意图;60.图5为本技术实施例提供的非活跃页面链表的另一种页面扫描和回收过程示意图;61.图6为本技术实施例提供的内存回收装置的结构示意图;62.图7为本技术实施例提供的电子设备的结构示意图;63.图8为本技术实施例提供的电子设备的软件架构示意图。具体实施方式64.下面结合本技术实施例中的附图对本技术实施例进行描述。本技术实施例的实施方式部分使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。65.为了便于理解本技术实施例中的技术方案,下面首先对本技术实施例中所涉及的部分术语进行解释:66.page:物理页面,操作系统将物理内存分割成一个个固定大小的page,来作为操作系统管理物理内存的基本单位,page的大小一般为4kb。67.vma:虚拟内存区域,是操作系统分配给应用进程的一段连续的虚拟地址空间。68.电子设备中的物理内存是有限的,当多个应用进程要执行的时候,物理内存很快就会被耗尽。为此,目前的电子设备中普遍都采用了虚拟内存技术,该技术将一部分硬盘空间作为内存使用,使系统看上去具有比实际物理内存大的多的内存空间,该部分硬盘空间即称为虚拟内存。69.虚拟内存技术允许应用进程不必完全处于物理内存中,每个应用进程创建的时候,可以被分配一段连续的虚拟地址空间(其可以大于物理内存),当应用进程被执行时,其实际用多少物理内存,就为其分配多少物理内存。其中,应用进程的虚拟地址空间可以包括若干个不重叠的区域,这些区域即称为vma,即一个应用进程可以拥有多个vma。70.另外,虚拟内存技术允许多个应用进程共享物理内存,即一个page可以映射到多个应用进程的vma。在进行内存分配时,一个page可以被一个应用进程独占,对应一个vma;一个page也可以被多个应用进程共享,对应多个vma。71.pte:页表项,用于记录虚拟地址空间中的虚拟页面与物理页面之间的映射关系。72.lru:最近最少使用,是一种常用的页面置换算法,该算法选择一部分最近最少使用的页面予以回收。73.具体地,物理内存可以被划分为多个内存区域(zone),操作系统以内存区域为单位进行内存管理。在lru算法中,对于每个内存区域,操作系统维护一组lru链表,操作系统在该内存区域中为应用进程分配的物理页面被存放在该组lru链表中。74.内存映射包括文件映射(即物理内存映射的vma对应到一个文件)和匿名映射(即物理内存映射的vma没有对应到文件),对应的,每个内存区域的lru链表可以包括:文件映射页面(简称文件页)对应的lru链表和匿名映射页面(简称匿名页)对应的lru链表,其中,每种映射页面对应的lru链表可以包括:活跃页面链表(activepagelist)和非活跃页面链表(inactivepagelist),活跃页面链表中存放最近经常被访问的处于活跃状态的物理页面,非活跃页面链表中存放最近不经常被访问的处于非活跃状态的物理页面。在此之外,lru链表还包括:禁止回收(unevictable)链表,该链表中存放被锁的禁止回收的物理页面,该链表中的页面可以是文件页或匿名页。内存回收主要针对活跃页面链表和非活跃页面链表中的页面,禁止回收链表中的页面一般不参与回收过程。75.当操作系统在当前内存区域中分配内存时如果发现内存紧缺,可以启动直接回收过程(directreclaim)进行内存回收;另外,后台进程kswapd会周期性地运行,一旦检测到某个内存区域的内存不足,也可以触发内存回收过程。76.对于需要进行内存回收的内存区域,在进行内存回收时,可以根据待回收的页面数确定该内存区域的各个lru链表需要扫描的页面数,然后依次扫描各个lru链表。其中,在非活跃页面链表中的页面数足够多的情况下,活跃页面链表可以不进行扫描。77.对于活跃页面链表,在进行扫描时,可以将该链表中最近最少使用的一些页面移动到非活跃页面链表中;对于非活跃页面链表,在进行扫描时,可以将该链表中最近最少使用的一些页面回收,另外,非活跃页面链表中的一些最近被访问过的页面也可以被移到活跃页面链表中。78.具体地,为了确定lru链表中页面的访问情况,在将vma中的虚拟页面映射到物理页面后,操作系统会在对应的pte上设置一个访问标志位,其中,该访问标志位在一些版本中为access标志位,在一些版本中为pte_young标志位,下面以access标志位为例进行示例性说明。79.当应用进程访问虚拟地址时,操作系统通过pte查询该虚拟地址对应的物理地址,来访问对应的物理页面。当操作系统访问物理页面时,将对应的pte的access标志位置1;pte的access标志位对应的访问记录具有有效期,该标志位将在内存回收过程中被清空(或称为清零/清除),即将pte的access标志位置0。80.目前,在内存回收过程中,对于扫描到的物理页面,操作系统会扫描该物理页面对应的全部pte,查询各个pte的access标志位,以确定该物理页面的访问情况,并清空各个pte的access标志位。另外,在进行内存回收时,操作系统会同时考虑物理页面对应的vma的属性,对具有特定vma属性的物理页面执行相应的特定处理;一个物理页面可能对应多个vma,各个vma可能拥有不同的属性,因此,操作系统也会扫描物理页面对应的全部vma,获取物理页面对应的各个vma的属性,最后根据物理页面对应的各个vma的属性和物理页面的访问情况,决定是否将其从所在lru链表中移到其他lru链表或者进行回收。81.而上述页面扫描过程中,从物理页面查找vma以及对应的pte的操作,非常耗时。为此,本技术实施例提供一种内存回收方法,可以在内存回收过程中,提前结束扫描流程,缩短页面扫描过程的耗时,从而提高内存回收速度。下面对本技术实施例提供的内存回收方法进行详细说明。82.本技术中,在扫描物理页面对应的vma和pte的过程中,在每扫描一个vma或pte后,可以判断物理页面的访问次数和/或vma属性是否达到要求,如果达到要求则可以结束该物理页面的扫描流程;另外,对于提前结束扫描流程的物理页面,在后续再次扫描该物理页面时,比如在下一次扫描该物理页面时,可以扫描完该物理页面对应的全部pte,以清空该物理页面对应的各个pte的access标志位,满足pte访问记录的有效期要求,即,如果物理页面在上一次该物理页面的页面扫描流程中提前结束,则可以在本次该物理页面的页面扫描过程中扫描该物理页面的全部vma和pte。83.在具体实现时,可以为物理页面增加一个状态标志位(例如以下称为提前结束标志位),用于表示该物理页面在之前的页面扫描流程中是否提前结束。84.如前所述,物理内存以物理页面为单位进行管理,其中,操作系统为每个物理页面建立了一个结构体(即page结构体),采用该page结构体来描述一个物理页面。操作系统专门从物理内存中分配了若干空间,用来存储所有page结构体,即物理内存中大部分空间被划分为一个个的物理页面,用于分配给应用进程,一小部分空间用于存储各个物理页面的page结构体。85.在物理页面对应的page结构体中,变量flags用于记录物理页面的各种状态信息,其包括32或64位(bit),每个bit可用于标识该物理页面的某个状态信息。本实施例中,可以利用该变量flags中的某个空闲bit,作为提前结束标志位,该状态标志位例如可以表示为:pg_referencing。86.可以理解的是,也可以通过其他方式指示物理页面在之前的页面扫描流程中是否提前结束,例如可以通过数组记录物理页面在之前的页面扫描流程中是否提前结束;提前结束标志位也可以采用其他实现方式,比如提前结束标志位也可以是物理页面结构体中新增加的一个变量,或者是物理页面结构体中其他已有变量的一个bit。对于指示物理页面在之前的页面扫描流程中是否提前结束的方式,以及提前结束标志位的具体实现方式,本技术实施例不做特别限定。为了便于说明,下面以通过pg_referencing标志位指示物理页面在之前的页面扫描流程中是否提前结束为例,示例性说明本技术的技术方案。87.示例性地,pg_referencing标志位置1,表示物理页面在之前的页面扫描流程中提前结束;pg_referencing标志位置0,表示物理页面在之前的页面扫描流程中没有提前结束。88.如图1所示,物理页面的扫描回收过程可以包括如下步骤:89.步骤s100:对于扫描到的物理页面,可以检查该物理页面的pg_referencing标志位。90.步骤s200:如果该物理页面的pg_referencing标志位为0,则可以在每扫描一个vma或pte后,判断物理页面的访问次数和/或vma属性是否达到要求。91.步骤s300:如果达到要求则可以结束该物理页面的扫描流程,并将该物理页面的pg_referencing标志位置1。92.步骤s400:在结束物理页面的扫描流程后,可以确定该物理页面的回收策略,执行所确定的回收策略。93.步骤s500:如果物理页面的pg_referencing标志位为1,则可以按照目前的流程扫描完该物理页面全部的vma和pte,并将该物理页面的pg_referencing标志位置0。然后可以执行上述步骤s400,确定该物理页面的回收策略,执行所确定的回收策略。94.其中,在步骤s300中,当物理页面的访问次数与vma属性达到要求时,可以直接将该物理页面的pg_referencing标志位置1;也可以进一步判断是否遍历完该物理页面全部的vma和pte,即是否是提前结束该物理页面的扫描流程,在确定是提前结束该物理页面的扫描流程的情况下,将该物理页面的pg_referencing标志位置1,否则可以继续保持该物理页面的pg_referencing标志位为0。95.初始时,物理页面未被扫描过,即物理页面没有在之前的页面扫描流程中提前结束,因此,物理页面的pg_referencing标志位初始值可以是0,此种情况下,在该物理页面被首次扫描到时,可以执行步骤s200和s300对应的能够提前结束扫描的流程。当然,物理页面的pg_referencing标志位初始值可以是1,此种情况下,在该物理页面被首次扫描到时,可以执行步骤s500对应的扫描全部vma和pte的流程。96.对于页面迁移的情况,例如将pagea的页面内容迁移到pageb,在迁移时,pageb的pg_referencing标志位与迁移前pagea的pg_referencing标志位一致,即迁移前pagea的pg_referencing标志位为0,迁移时pageb的pg_referencing标志位也置为0;迁移前pagea的pg_referencing标志位为1,迁移时pageb的pg_referencing标志位也置为1。另外,在迁移时,可以将pagea的pg_referencing标志位置为初始值,例如为0。97.上述的物理页面可以是文件页,也可以是匿名页;其可以是活跃页面链表(activepagelist)中的物理页面,也可以是非活跃页面链表(inactivepagelist)中的物理页面。98.对于活跃页面链表中的物理页面,在步骤s400中,可以根据物理页面的页面类型(文件页或匿名页)、访问次数和可执行状态等属性信息,确定物理页面的回收策略;其回收策略可以包括:将物理页面移入非活跃页面链表,或者,将物理页面保持在活跃页面链表中。99.如果物理页面为可执行的文件页,说明该物理页面可能是需要频繁读写执行的,若该物理页面最近被访问过(即物理页面访问次数大于0),回收时则可以跳过该物理页面,让其继续保持在活跃页面链表中,否则(即物理页面不是可执行的文件页或者物理页面最近未被访问过),可以将该物理页面移入非活跃页面链表中。100.在判断物理页面是否为可执行的文件页时,可以判断该物理页面是否为文件页,且该物理页面对应的vma是否具有可执行权限,如果物理页面为文件页,且物理页面对应的任意一个vma具有可执行权限,则可以确定该物理页面为可执行的文件页。101.对于非活跃页面链表中的物理页面,可以根据物理页面的页面类型(文件页或匿名页)、访问次数、锁状态、回写状态和页数据状态(脏页或干净页)等属性信息,确定物理页面的回收策略;其回收策略可以包括:将物理页面回收,或者,将物理页面移动到活跃页面链表中,或者,将物理页面保持在非活跃页面链表中,或者,将物理页面移动到禁止回收链表中。102.步骤s200中,在每扫描一个vma或pte后,进行的判断过程是为了提前结束物理页面的扫描流程,由于扫描物理页面的vma和pte,是为了确定物理页面的回收策略,因此,本实施例中,可以基于如下方式确定提前结束扫描流程的时机:如果基于已扫描到的信息可以确定出回收策略,则可以提前结束扫描流程。因而,步骤s200中,判断过程中所述的要求(即提前结束扫描流程对应的条件),可以根据确定回收策略时所考虑的条件确定。103.其中,对于活跃页面链表中的物理页面,如上所述,在确定回收策略时主要是判断物理页面是否满足放回活跃页面链表所需的条件:物理页面的访问次数大于0(以下称为条件11),且物理页面为可执行的文件页(以下称为条件12);即,满足该条件11和条件12时,就可以确定出物理页面的回收策略了;此时也可以结束扫描流程了。对应地,提前结束扫描流程对应的条件即可以包括上述条件11和条件12,也就是说,步骤s200中的判断过程即为判断物理页面的访问次数和vma属性是否达到要求:物理页面的访问次数大于0,且物理页面为可执行的文件页(物理页面为文件页,且物理页面对应的任意一个vma具有可执行权限)。104.对于非活跃页面链表中的物理页面,确定回收策略时考虑的条件较多,本实施例中,可以基于一个或多个优先级相对比较高的条件确定提前结束扫描流程对应的条件,这样在满足这些条件时提前结束扫描流程,对页面回收策略的影响较小,从而在提升扫描速度的同时,可以获得较优的内存回收策略,进而可以进一步提升内存回收速度。105.其中,优先级相对比较高的条件包括:物理页面存在被锁的vma(以下称为条件21),和,物理页面的访问次数大于1(以下称为条件22);当物理页面满足条件21时,可以跳过该页面,将其放入禁止回收链表中;当物理页面满足条件22时,可以将该页面移入活跃页面链表中。即,当满足条件21和条件22中的任意一个条件时,就可以确定出物理页面的回收策略了;此时也可以结束扫描流程了。对应地,提前结束扫描流程对应的条件可以是上述条件21,也可以是上述条件22,即,步骤s200中的判断过程可以是判断物理页面的vma属性是否达到要求:物理页面存在被锁的vma,或者,判断物理页面的访问次数是否达到要求:物理页面的访问次数大于1。106.也就是说,步骤s200中,为了确定是否可以提前结束扫描流程,在一些实施例中,扫描活跃页面链表时,可以判断物理页面的访问次数和vma属性是否达到要求(可以包括上述条件11和条件12),当物理页面的访问次数和vma属性均达到要求时,结束该物理页面的扫描流程;在一些实施例中,扫描非活跃页面链表时,可以判断物理页面的vma属性是否达到要求(例如上述条件21),或者,物理页面的访问次数是否达到要求(例如上述条件22),当物理页面的访问次数或vma属性达到要求时,结束该物理页面的扫描流程。107.下面结合上述两种lru链表说明物理页面的页面扫描流程的几种可能的实现方式。108.扫描活跃页面链表:109.为了提高处理效率,操作系统在扫描活跃页面链表时,可以先定义三个临时链表,然后根据该活跃页面链表需要扫描的页面数,从该链表中(一般是尾部)隔离出一些页放入到临时链表i_hold中,再对临时链表i_hold中的页面进行扫描。对于要移动到非活跃页面链表中的页面,将其放在临时链表i_inactive中;对于要放回活跃页面链表中的页面,将其放在临时链表i_active中。最后将临时链表i_inactive中的物理页面添加到非活跃页面链表中,将临时链表i_active中的物理页面添加到活跃页面链表中。110.下面以通过临时链表进行页面扫描为例,说明临时链表i_hold中任意一个物理页面的页面扫描和回收流程。111.图2为本技术实施例提供的活跃页面链表的页面扫描和回收过程示意图,如图2所示,该过程可以包括如下步骤:112.步骤s101:对于扫描到的物理页面,可以先遍历该物理页面对应的vma。113.步骤s102:对于遍历到的vma,确定该vma对应的pte。114.具体地,可以采用基于对象的反向映射(object-basedreversemapping,objrmap)机制查找物理页面对应的vma和pte,操作系统可以建立物理页面到vma的链表,通过该链表找到物理页面对应的vma,再通过vma的内存描述符找到页全局目录,进而找到相应的pte。115.步骤s103:在确定出pte后,可以根据该pte的access标志位确定该pte最近是否被访问过,若是,即该pte最近被访问过(对应的,access标志位为1),可以执行步骤s104和s105;否则,可以跳过步骤s104和s105。116.步骤s104:清空该pte的access标志位。117.步骤s105:将物理页面的访问次数加1。118.步骤s106:在遍历完一个vma和pte后,可以判断该物理页面的pg_referencing标志位是否为0,若是,可以执行步骤s107,判断是否满足提前结束扫描流程的条件;否则,可以执行步骤s115,继续进行vma遍历流程。119.步骤s107:判断是否满足条件:物理页面的访问次数大于0,且物理页面为可执行的文件页;如果不满足条件,可以执行步骤s108,继续进行vma遍历流程;如果满足条件,可以执行步骤s112~s114,结束该物理页面的扫描流程,更新该物理页面的pg_referencing标志位,以及执行相应的回收策略。120.如果该物理页面的pg_referencing标志位为0,说明该物理页面在上一次的页面扫描流程中没有提前结束,此时可以判断是否满足上述提前结束扫描流程的条件(以下称为第一条件)。121.如前所述,第一条件可以根据将物理页面放回活跃页面链表所需的条件确定,其可以为将物理页面放回活跃页面链表所需的条件:物理页面的访问次数大于0(即条件11),且物理页面为可执行的文件页(即条件12)。122.在具体实现时,可以先判断是否满足条件11,在满足条件11的情况下,判断是否满足条件12;也可以先判断是否满足条件12,在满足条件12的情况下,判断是否满足条件11;或者也可以同时判断是否满足条件11和条件12,本实施例对此不做特别限定。123.步骤s108:当不满足第一条件时,可以判断是否遍历完该物理页面的全部vma,若未遍历完该物理页面的全部vma,则返回执行步骤s101,继续遍历该物理页面的下一个vma;若遍历完该物理页面的全部vma,则可以执行步骤s109~s111。124.步骤s109:保持该物理页面的pg_referencing标志位为0。125.在物理页面的pg_referencing标志位为0的情况下,如果遍历完了全部的vma,说明本次扫描没有提前结束,则该物理页面继续保持pg_referencing标志位为0。126.步骤s110:结束该物理页面的扫描流程。127.如前面步骤s400所述,在结束物理页面的扫描流程后,就可以确定该物理页面的回收策略,执行所确定的回收策略。对于活跃页面链表,可以判断是否满足将物理页面放回活跃页面链表所需的条件,如果满足,则将该物理页面放回活跃页面链表;如果不满足,则将该物理页面移入非活跃页面链表。128.对于物理页面的pg_referencing标志位为0的情况,如上所述,提前结束扫描流程对应的第一条件也即将物理页面放回活跃页面链表所需的条件,也就是说,在进行物理页面的vma和pte扫描过程中,已进行了回收策略对应的条件判断,因此,在扫描结束时,即可根据物理页面的vma的遍历情况确定出物理页面的回收策略,此时则可以省略确定回收策略对应的条件判断过程,根据物理页面的vma的遍历情况执行下述步骤s111或步骤s114。129.步骤s111:将该物理页面移入非活跃页面链表。130.如前所述,第一条件也即将物理页面放回活跃页面链表所需的条件,在物理页面的pg_referencing标志位为0的情况下,如果遍历完了全部的vma,也不满足第一条件,即不满足将物理页面放回活跃页面链表所需的条件,则可以将该物理页面移到非活跃页面链表中。131.步骤s112:当满足第一条件时,可以将该物理页面的pg_referencing标志位置1。132.在物理页面的pg_referencing标志位为0的情况下,如果在扫描过程中检测到满足上述提前结束扫描流程的条件(即第一条件),则可以认为本次扫描提前结束,对应地,可以将该物理页面的pg_referencing标志位置1。133.其中,在满足第一条件的情况下,也可以进一步判断是否遍历完该物理页面的全部vma,在未遍历完该物理页面的全部vma的情况下,将该物理页面的pg_referencing标志位置1;在遍历完该物理页面的全部vma的情况下,将该物理页面的pg_referencing标志位置0。对于不进一步判断是否遍历完物理页面的全部vma的实现方式,可以减少本次页面扫描的处理流程;对于进一步判断是否遍历完物理页面的全部vma的实现方式,可以使得在下次扫描该物理页面时,有可能提前结束扫描流程,在具体实现时,可以根据需要选择,本实施例对此不做特别限定。134.步骤s113:结束该物理页面的扫描流程。135.步骤s114:将该物理页面放回活跃页面链表。136.如前所述,第一条件也即将物理页面放回活跃页面链表所需的条件,如果满足第一条件,即满足将物理页面放回活跃页面链表所需的条件,则可以将该物理页面继续保持在活跃页面链表中。137.步骤s115:如果物理页面的pg_referencing标志位为1,说明该物理页面在上一次的页面扫描流程中提前结束,此时可以判断是否遍历完该物理页面的全部vma。在未遍历完该物理页面的全部vma的情况下,返回执行步骤s101,继续遍历该物理页面的下一个vma;在遍历完该物理页面的全部vma的情况下,执行步骤s116~s118。138.步骤s116:将该物理页面的pg_referencing标志位置0。139.如果物理页面的pg_referencing标志位为1,则本次扫描中遍历该物理页面全部的vma和pte,即本次扫描未提前结束,则将该物理页面的pg_referencing标志位更新为0。140.步骤s117:结束该物理页面的扫描流程。141.步骤s118:判断是否满足第一条件,如果满足第一条件,可以执行步骤s119;如果不满足第一条件,可以执行步骤s120。142.对于物理页面的pg_referencing标志位为1的情况,在遍历完该物理页面全部的vma和pte后,可以继续判断是否满足第一条件,以确定该物理页面的回收策略。143.如前所述,第一条件也即将物理页面放回活跃页面链表所需的条件,如果满足第一条件,则可以执行下述步骤s119,将该物理页面继续保持在活跃页面链表中;如果不满足第一条件,可以执行下述步骤s120,将该物理页面移到非活跃页面链表中。144.步骤s119:将该物理页面放回活跃页面链表。145.步骤s120:将该物理页面移入非活跃页面链表。146.在上述将物理页面放回活跃页面链表或移入非活跃页面链表时,都可以通过临时链表实现,即先将物理页面放入对应的临时链表,再将临时链表中的物理页面一并添加到对应的lru链表中。147.可以理解的是,上述的一些步骤之间并没有严格的时序执行关系,比如,步骤s104与s105之间、步骤s109~s111之间、步骤s112~s114之间、步骤s116~s118之间可以是同时执行,也可以是按任意顺序先后执行;另外,上述步骤中的一个或者几个步骤的执行顺序可以进行调整,也可以进行选择性组合,例如,图3示出了另一种可能的实现方式,如图3所示,该实现方式中,页面扫描和回收过程可以包括如下步骤:148.步骤s201:对于扫描到的物理页面,判断该物理页面的pg_referencing标志位是否为0,若是,则执行步骤s202;否则,执行步骤s204。149.由于物理页面的pg_referencing标志位和物理页面是否是文件页,无需扫描vma和pte即可知晓,因此,为了简化后续的条件判断操作,对于扫描到的物理页面,可以先判断该物理页面的pg_referencing标志位是否为0。150.如果该物理页面的pg_referencing标志位不为0(即为1),说明该物理页面在上一次的页面扫描流程中提前结束,此时可以进入遍历物理页面所有vma和pte的流程,执行下述步骤s204;如果该物理页面的pg_referencing标志位为0,说明该物理页面在上一次的页面扫描流程中没有提前结束,此时可以执行下述步骤s202,判断该物理页面是否为文件页。151.步骤s202:判断该物理页面是否为文件页;若是,则执行步骤s203;否则,执行步骤s204。152.如果该物理页面为文件页,则后续在遍历vma和pte的过程中,可以继续进行访问次数和可执行权限的判断,如果该物理页面不是文件页,则后续在遍历vma和pte的过程中,可以不再进行访问次数和可执行权限的判断,以减少处理流程。153.其中,可以通过一个扫描类型标记,指示是否是pg_referencing标志位为0,且物理页面为文件页,此处示例性地,扫描类型默认值为active_def,如果pg_referencing标志位为0,且物理页面为文件页,则执行下述步骤s203,将扫描类型设为active_ref;如果pg_referencing标志位为1,或物理页面不是文件页,扫描类型继续保持默认值active_def。154.步骤s203:将扫描类型设为active_ref。155.在执行完上述判断后,可以进入下述遍历物理页面所有vma和pte的流程。156.步骤s204:遍历该物理页面对应的vma。157.步骤s205:对于遍历到的vma,确定该vma对应的pte。158.步骤s206:根据pte的access标志位判断该pte最近是否被访问过,如果该pte最近被访问过,可以执行步骤s207和s208;如果该pte最近未被访问过,可以跳过步骤s207和s208。159.步骤s207:清空该pte的access标志位。160.步骤s208:物理页面的访问次数加1。161.步骤s209:在遍历完一个vma和pte后,可以判断扫描类型是否为active_ref,若是,可以执行步骤s210,判断是否满足提前结束扫描流程的条件;否则,可以执行步骤s214,继续进行vma遍历流程。162.如果扫描类型为active_ref,说明该物理页面的pg_referencing标志位为0,且该物理页面为文件页,此时可以继续判断该物理页面是否满足第一条件的剩余条件:物理页面的访问次数大于0,且已扫描的vma中存在具有可执行权限的vma。163.如果扫描类型不是active_ref,说明该物理页面的pg_referencing标志位为1,或者该物理页面不是文件页,此时可以继续进行vma遍历流程,判断是否遍历完该物理页面的全部vma。164.步骤s210:判断该物理页面是否满足第一条件的剩余条件:物理页面的访问次数大于0,且已扫描的vma中存在具有可执行权限的vma;如果满足剩余条件,可以执行步骤s211~s213,结束该物理页面的扫描流程;如果不满足剩余条件,可以执行步骤s214,继续进行vma遍历流程。165.其中,在不满足剩余条件的情况下,判断是否遍历完该物理页面的全部vma的步骤,可以与扫描类型不是active_ref的情况下,判断是否遍历完该物理页面的全部vma的步骤合并为一个步骤,即步骤s214。166.步骤s211:将该物理页面的pg_referencing标志位置1。167.当扫描类型为active_ref时,该物理页面的pg_referencing标志位为0,且该物理页面满足第一条件中的其中一个条件:该物理页面为文件页;如果该物理页面还满足第一条件的剩余条件,则说明该物理页面满足提前结束扫描流程的条件(即第一条件),则可以认为本次扫描提前结束,对应地,可以将该物理页面的pg_referencing标志位置1。168.其中,在满足剩余条件的情况下,也可以进一步判断是否遍历完该物理页面的全部vma,在未遍历完该物理页面的全部vma的情况下,将该物理页面的pg_referencing标志位置1;在遍历完该物理页面的全部vma的情况下,将该物理页面的pg_referencing标志位置0,以便在下次扫描该物理页面时,有可能提前结束扫描流程。169.步骤s212:结束该物理页面的扫描流程。170.步骤s213:将该物理页面放回活跃页面链表。171.如前所述,第一条件也即将物理页面放回活跃页面链表所需的条件,如果满足第一条件,即满足将物理页面放回活跃页面链表所需的条件,则可以将该物理页面继续保持在活跃页面链表中。172.步骤s214:如果扫描类型不是active_ref,或者,扫描类型为active_ref时不满足第一条件的剩余条件,可以继续进行vma遍历流程,判断是否遍历完该物理页面的全部vma,在未遍历完该物理页面的全部vma的情况下,返回执行步骤s204,继续遍历该物理页面的下一个vma;在遍历完该物理页面的全部vma的情况下,执行步骤s215~s218,结束该物理页面的扫描流程,更新该物理页面的pg_referencing标志位,以及执行相应的回收策略。173.步骤s215:结束该物理页面的扫描流程。174.步骤s216:判断物理页面的pg_referencing标志位是否为0;若是,则执行步骤s217;否则,执行步骤s219。175.如前所述,在不满足剩余条件的情况下(物理页面的pg_referencing标志位为0),判断是否遍历完该物理页面的全部vma的步骤,与物理页面的pg_referencing标志位为1的情况下,判断是否遍历完该物理页面的全部vma的步骤进行了合并,此时,如果遍历完该物理页面的全部vma,可以区分pg_referencing标志位为0和pg_referencing标志位为1的情况,判断物理页面的pg_referencing标志位是否为0,在物理页面的pg_referencing标志位为0的情况下,执行步骤s217和s218;在物理页面的pg_referencing标志位为1的情况下,执行步骤s219~s222。176.可以理解的是,此处是以物理页面的pg_referencing标志位为0情况下,省略确定回收策略对应的条件判断过程为例进行示例性说明,在一些实施例中,也可以省略确定回收策略对应的条件判断过程,此时,可以不执行步骤s216~s218,在遍历完全部vma后,执行步骤s215和s219~s222;另外,在执行完步骤s212后,先进行步骤s220中的判断,然后执行步骤s213。177.步骤s217:保持该物理页面的pg_referencing标志位为0。178.在物理页面的pg_referencing标志位为0的情况下,如果遍历完了全部的vma,说明本次扫描没有提前结束,则该物理页面继续保持pg_referencing标志位为0。179.步骤s218:将该物理页面移入非活跃页面链表。180.如前所述,第一条件也即将物理页面放回活跃页面链表所需的条件,在物理页面的pg_referencing标志位为0的情况下,如果遍历完了全部的vma,也不满足第一条件,即不满足将物理页面放回活跃页面链表所需的条件,则可以将该物理页面移到非活跃页面链表中。181.步骤s219:将该物理页面的pg_referencing标志位置0。182.如果物理页面的pg_referencing标志位为1,则本次扫描中遍历该物理页面全部的vma和pte,即本次扫描未提前结束,则将该物理页面的pg_referencing标志位更新为0。183.步骤s220:判断是否满足第一条件:物理页面的访问次数大于0,且物理页面为可执行的文件页;如果满足第一条件,可以执行步骤s221;如果不满足第一条件,可以执行步骤s222。184.对于物理页面的pg_referencing标志位为1的情况,在遍历完该物理页面全部的vma和pte后,可以继续判断是否满足第一条件,以确定该物理页面的回收策略。185.如前所述,第一条件也即将物理页面放回活跃页面链表所需的条件,如果满足第一条件,则可以执行下述步骤s221,将该物理页面继续保持在活跃页面链表中;如果不满足第一条件,可以执行下述步骤s222,将该物理页面移到非活跃页面链表中。186.步骤s221:将该物理页面放回活跃页面链表。187.步骤s222:将该物理页面移入非活跃页面链表。188.扫描非活跃页面链表:189.与活跃页面链表类似,操作系统在扫描非活跃页面链表时,也可以先根据非活跃页面链表需要扫描的页面数,从该链表中(一般是尾部)隔离出一些页放入到临时链表page_list中,然后对该临时链表page_list中的页面进行扫描,将可以回收的页面进行回收,将需要移动到活跃页面链表中的页面添加到活跃页面链表中,将需要放回非活跃页面链表中的页面添加到非活跃页面链表中,将需要移动到禁止回收链表中的页面添加到禁止回收链表中,这几种页面也可以暂存入临时链表中,最后一并进行回收或移动。190.下面以通过临时链表page_list进行页面扫描为例,说明临时链表page_list中任意一个物理页面的页面扫描和回收流程。191.图4为本技术实施例提供的内存回收方法的流程示意图,如图4所示,该过程可以包括如下步骤:192.步骤s301:对于扫描到的物理页面,可以先遍历该物理页面对应的vma。193.步骤s302:对于遍历到的vma,可以确定该vma对应的pte。194.步骤s303:根据pte的access标志位判断该pte最近是否被访问过,如果该pte最近被访问过(对应的,access标志位为1),可以执行步骤s304和s305;如果该pte最近未被访问过,可以跳过步骤s304和s305。195.步骤s304:清空该pte的access标志位。196.步骤s305:将物理页面的访问次数加1。197.步骤s306:在遍历完一个vma和pte后,可以判断该物理页面的pg_referencing标志位是否为0,如果该物理页面的pg_referencing标志位为0,说明该物理页面在上一次的页面扫描流程中没有提前结束,此时可以执行步骤s307,判断是否满足提前结束扫描流程的条件;否则,可以执行步骤s311,继续进行vma遍历流程。198.步骤s307:判断物理页面是否满足提前结束扫描流程的条件(以下称为第二条件):物理页面存在被锁的vma,或者,物理页面的访问次数大于1。如果满足第二条件,可以执行步骤s308~s310,结束该物理页面的扫描流程,更新该物理页面的pg_referencing标志位,以及执行相应的回收策略;如果不满足第二条件,可以执行步骤s311,继续进行vma遍历流程。199.如前所述,第二条件可以根据确定物理页面的回收策略时所考虑的条件确定,此处示例性地,第二条件包括上述的:物理页面存在被锁的vma(即条件21),或者,物理页面的访问次数大于1(即条件22)。200.在具体实现时,可以先判断是否满足条件21,在不满足条件21的情况下,判断是否满足条件22;也可以先判断是否满足条件22,在不满足条件22的情况下,判断是否满足条件21;或者也可以同时判断是否满足条件21或条件22,本实施例对此不做特别限定。201.可以理解的是,第二条件也可以是其他条件,本实施例对此不做特别限定。202.步骤s308:将该物理页面的pg_referencing标志位置1。203.如果该物理页面满足第二条件,则可以认为本次扫描提前结束,对应地,可以将该物理页面的pg_referencing标志位置1。204.其中,在满足第二条件的情况下,也可以进一步判断是否遍历完该物理页面的全部vma,在未遍历完该物理页面的全部vma的情况下,将该物理页面的pg_referencing标志位置1;在遍历完该物理页面的全部vma的情况下,将该物理页面的pg_referencing标志位置0。205.步骤s309:结束该物理页面的扫描流程。206.步骤s310:物理页面的扫描流程结束后,就可以确定该物理页面的回收策略,执行该回收策略。207.在回收物理页面时,如果物理页面为文件页,可以释放该物理页面;如果物理页面为匿名页,可以将该物理页面换出到交换(swap)分区,并释放掉,在写入swap分区时可以进行内存压缩。当该物理页面被重新访问时,可以触发该物理页面的重新换入过程,即将swap分区的该物理页面重新加载到内存中。其中,上述交换过程可以通过zswapd进程实现。208.步骤s311:如果物理页面的pg_referencing标志位为1,或者,物理页面不满足第二条件,可以继续进行vma遍历流程,判断是否遍历完该物理页面的全部vma。若未遍历完该物理页面的全部vma,则返回执行步骤s301,继续遍历该物理页面的下一个vma;若遍历完该物理页面的全部vma,则可以执行步骤s312,更新该物理页面的pg_referencing标志位,并执行步骤s309和s310,结束该物理页面的扫描流程,确定和执行回收策略。209.步骤s312:将该物理页面的pg_referencing标志位置0。210.如果遍历完了全部的vma,说明本次扫描没有提前结束,则可以将该物理页面的pg_referencing标志位置为0。211.与活跃页面链表的扫描过程类似,在上述回收物理页面或将物理页面放回活跃页面链表时,都是可以通过临时链表实现,即先将物理页面放入对应的临时链表,再将临时链表中的物理页面一并回收或者添加到对应的lru链表中。212.同样地,上述步骤中的一个或者几个步骤的执行顺序可以进行调整,也可以进行选择性组合,例如,图5示出了另一种可能的实现方式,如图5所示,该实现方式中,页面扫描和回收过程可以包括如下步骤:213.步骤s401:对于扫描到的物理页面,判断该物理页面的pg_referencing标志位是否为0,若是,则执行步骤s402;否则,执行步骤s403。214.与图4类似,由于物理页面的pg_referencing标志位,无需扫描vma和pte即可知晓,因此,对于扫描到的物理页面,可以先判断该物理页面的pg_referencing标志位是否为0。215.如果该物理页面的pg_referencing标志位不为0(即为1),说明该物理页面在上一次的页面扫描流程中提前结束,此时可以进入遍历物理页面所有vma和pte的流程,执行下述步骤s403,另外,扫描类型保持默认值inactive_def;如果该物理页面的pg_referencing标志位为0,说明该物理页面在上一次的页面扫描流程中没有提前结束,此时可以进行扫描类型的标记,执行下述步骤s402,将扫描类型设为inactive_ref。其中,扫描类型可以是扫描函数自定义的参数,相对于查询物理页面的pg_referencing标志位来说,其查询速度更快,因而可以在一定程度上提升扫描速度。216.步骤s402:将扫描类型设为inactive_ref。217.在执行完上述判断后,可以进入下述遍历物理页面所有vma和pte的流程。218.步骤s403:遍历该物理页面对应的vma。219.步骤s404:对于遍历到的vma,确定该vma对应的pte。220.步骤s405:根据pte的access标志位判断该pte最近是否被访问过,如果该pte最近被访问过,可以执行步骤s406和s407;如果该pte最近未被访问过,可以跳过步骤s406和s407。221.步骤s406:清空该pte的access标志位。222.步骤s407:将物理页面的访问次数加1。223.步骤s408:在遍历完一个vma和pte后,可以判断扫描类型是否为inactive_ref,若是,可以执行步骤s409,判断是否满足提前结束扫描流程的条件(即第二条件);否则,可以执行步骤s413,继续进行vma遍历流程。224.步骤s409:如果扫描类型为inactive_ref,说明该物理页面的pg_referencing标志位为0,此时可以继续判断该物理页面是否满足第二条件:物理页面存在被锁的vma,或者,物理页面的访问次数大于1。如果满足第二条件,可以认为本次扫描提前结束,则可以执行步骤s410~s412,结束该物理页面的扫描流程;如果不满足第二条件,可以执行步骤s413,继续进行vma遍历流程。225.步骤s410:将该物理页面的pg_referencing标志位置1。226.步骤s411:结束该物理页面的扫描流程。227.步骤s412:确定该物理页面的回收策略,执行该回收策略。228.步骤s413:如果扫描类型不是inactive_ref,或者,物理页面不满足第二条件,可以继续进行vma遍历流程,判断是否遍历完该物理页面的全部vma。在未遍历完该物理页面的全部vma的情况下,返回执行步骤s403,继续遍历该物理页面的下一个vma;在遍历完该物理页面的全部vma的情况下,执行步骤s414,更新该物理页面的pg_referencing标志位,并执行步骤s411和s412,结束该物理页面的扫描流程,确定和执行回收策略。229.步骤s414:将该物理页面的pg_referencing标志位置0。230.如果遍历完了全部的vma,说明本次扫描没有提前结束,则可以将该物理页面的pg_referencing标志位置为0。231.本领域技术人员可以理解,以上实施例是示例性的,并非用于限定本技术。在可能的情况下,以上步骤中的一个或者几个步骤的执行顺序可以进行调整,也可以进行选择性组合,得到一个或多个其他实施例,例如,也可以在每扫描一个vma后进行第一条件或第二条件的判断,在不满足条件的情况下确定扫描到的vma对应的pte,在满足条件的情况下结束物理页面的扫描流程。本领域技术人员可以根据需要从上述步骤中任意进行选择组合,凡是未脱离本技术方案实质的,都落入本技术的保护范围。232.请参见下面的表1,为采用目前的遍历物理页面的全部vma和pte的现有内存回收方案与采用本技术实施例提供的能够提前结束页面扫描流程的内存回收方案的效果对比结果,优化前即采用现有内存回收方案,优化后即采用本技术实施例提供的内存回收方案。表1中给出了直接回收过程(directreclaim)、后台进程kswapd和zswapd进程三种内存回收过程的效果对比,其中,耗时单位为毫秒(ms)。233.表1:[0234]优化前优化后优化直接回收耗时40249721788245.87%kswapd耗时99289467870131.64%zswapd耗时89767780768910.02%[0235]通过上述对比可知,本技术实施例提供的内存回收方案缩短了内存回收耗时,提高了内存回收速度。[0236]另外,在执行内存保活模型测试后,相比现有的内存回收方案,本技术实施例提供的内存回收方案可以将应用程序(application,app)的保活数量从16.2提升到17.53。[0237]本实施例提供的内存回收方法,在扫描物理页面对应的vma和pte的过程中,在每扫描一个vma或pte后,判断物理页面的访问次数和/或vma属性是否达到要求,如果达到要求则结束该物理页面的扫描流程,这样就可以缩短页面扫描过程的耗时,从而提高内存回收速度。另外,本方案中,在扫描物理页面对应的vma和pte时,如果该物理页面在上一次该物理页面的页面扫描流程中提前结束,则在本次该物理页面的页面扫描过程中扫描该物理页面的全部pte,这样就可以对物理页面的各个pte进行访问记录的清除过程,满足pte访问记录的有效期要求。[0238]基于同一构思,作为对上述方法的实现,本技术实施例提供了一种内存回收装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。[0239]图6为本技术实施例提供的内存回收装置的结构示意图,如图6所示,本实施例提供的装置包括:扫描模块210和处理模块220。[0240]其中,扫描模块210用于支持电子设备执行上述实施例中页面扫描相关的步骤和/或用于本文所描述的技术的其它过程。[0241]处理模块220用于支持电子设备执行上述实施例中确定和执行回收策略相关的步sound,i2s)接口,脉冲编码调制(pulsecodemodulation,pcm)接口,通用异步收发传输器(universalasynchronousreceiver/transmitter,uart)接口,移动产业处理器接口(mobileindustryprocessorinterface,mipi),通用输入输出(general-purposeinput/output,gpio)接口,用户标识模块(subscriberidentitymodule,sim)接口,和/或通用串行总线(universalserialbus,usb)接口等。[0251]i2c接口是一种双向同步串行总线,包括一根串行数据线(serialdataline,sda)和一根串行时钟线(serailclockline,scl)。i2s接口可以用于音频通信。pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。uart接口是一种通用串行数据总线,用于异步通信;该总线可以为双向通信总线,它将要传输的数据在串行通信与并行通信之间转换。mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件;mipi接口包括摄像头串行接口(cameraserialinterface,csi),显示屏串行接口(displayserialinterface,dsi)等。gpio接口可以通过软件配置,gpio接口可以被配置为控制信号,也可被配置为数据信号。usb接口130是符合usb标准规范的接口,具体可以是miniusb接口,microusb接口,usbtypec接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。[0252]可以理解的是,本技术实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。[0253]充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。[0254]电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。[0255]电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。[0256]天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。[0257]移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoiseamplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。[0258]调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。[0259]无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocalareanetworks,wlan)(如无线保真(wirelessfidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(globalnavigationsatellitesystem,gnss),调频(frequencymodulation,fm),近场通信技术(nearfieldcommunication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。[0260]在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(globalsystemformobilecommunications,gsm),通用分组无线服务(generalpacketradioservice,gprs),码分多址接入(codedivisionmultipleaccess,cdma),宽带码分多址(widebandcodedivisionmultipleaccess,wcdma),时分同步码分多址(timedivision-synchronouscodedivisionmultipleaccess,td-scdma),长期演进(longtermevolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(globalpositioningsystem,gps),全球导航卫星系统(globalnavigationsatellitesystem,gnss),北斗卫星导航系统(beidounavigationsatellitesystem,bds),准天顶卫星系统(quasi-zenithsatellitesystem,qzss)和/或星基增强系统(satellitebasedaugmentationsystems,sbas)。[0261]电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。[0262]显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,lcd),有机发光二极管(organiclight-emittingdiode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganiclightemittingdiode,amoled),柔性发光二极管(flexlight-emittingdiode,fled),miniled,microled,量子点发光二极管(quantumdotlightemittingdiodes,qled)等。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。[0263]电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。[0264]isp用于处理摄像头193反馈的数据。摄像头193用于捕获静态图像或视频。数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。视频编解码器用于对数字视频压缩或解压缩。[0265]npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。[0266]内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,以及至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,ufs)等。[0267]外部存储器接口120可以用于连接外部存储器,例如microsd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。[0268]电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。[0269]音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(openmobileterminalplatform,omtp)标准接口,美国蜂窝电信工业协会(cellulartelecommunicationsindustryassociationoftheusa,ctia)标准接口。[0270]按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nanosim卡,microsim卡,sim卡等。[0271]电子设备100的软件系统可以采用分层架构、事件驱动架构、微核架构、微服务架构或云架构。电子设备100的软件系统可以为安卓(android)系统、linux系统、windows系统、鸿蒙系统或ios系统等。[0272]本技术实施例以分层架构的android系统为例,示例性说明电子设备100的软件结构。[0273]图8为本技术实施例提供的电子设备的软件架构示意图,如图8所示,电子设备100的软件系统可以分成若干个层,层与层之间通过软件接口通信。在一些实施例中,android系统从上至下可以分为应用程序层、应用程序框架层、安卓运行时(androidruntime)和系统库,以及内核层。[0274]应用程序层可以包括一系列应用程序。如图8所示,应用程序可以包括相机、图库、日历、通话、wlan、蓝牙、音乐、视频、短信息、地图、浏览器等应用程序。[0275]应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramminginterface,api)和编程框架。应用程序框架层包括一些预先定义的函数。[0276]如图8所示,应用程序框架层可以包括窗口管理器、内容提供器、视图系统、电话管理器、资源管理器、通知管理器、活动管理器和输入管理器等。[0277]窗口管理器提供窗口管理服务(windowmanagerservice,wms),wms可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。[0278]内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。[0279]视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。[0280]电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。[0281]资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。[0282]通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备100振动,指示灯闪烁等。[0283]活动管理器可以提供活动管理服务(activitymanagerservice,ams),ams可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。[0284]输入管理器可以提供输入管理服务(inputmanagerservice,ims),ims可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。ims从输入设备节点取出事件,通过和wms的交互,将事件分配至合适的窗口。[0285]androidruntime包括核心库和虚拟机。androidruntime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。[0286]应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。[0287]系统库可以包括多个功能模块。例如:表面管理器(surfacemanager)、媒体库(medialibraries)、三维图形处理库(例如:opengles)和2d图形引擎(例如:sgl)等。[0288]表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。三维图形处理库用于实现三维图形绘图,图像渲染,合成和图层处理等。2d图形引擎是2d绘图的绘图引擎。[0289]内核层是硬件和软件之间的层,用于为android内核提供核心系统服务,如安全性服务、网络服务、内存管理服务、检测管理服务和驱动模型等。内核层可以包含显示驱动、摄像头驱动、音频驱动、传感器驱动和内存管理模块等,其中,内存管理模块可以提供内存管理服务,进行内存分配和内存回收操作,其中,内存回收操作可以包括上述方法实施例中所述的过程。[0290]本实施例提供的电子设备可以执行上述方法实施例,其实现原理与技术效果类似,此处不再赘述。[0291]本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例所述的方法。[0292]本技术实施例还提供一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行时实现上述方法实施例所述的方法。[0293]本技术实施例还提供一种芯片系统,包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现上述方法实施例所述的方法。其中,所述芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。[0294]在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘或磁带)、光介质(例如dvd)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。[0295]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质可以包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。[0296]在本技术中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。[0297]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。[0298]在本技术所提供的实施例中,应该理解到,所揭露的装置/设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。[0299]应当理解,在本技术说明书和所附权利要求书的描述中,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。[0300]在本技术的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,a/b可以表示a或b;本技术中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。[0301]并且,在本技术的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项”或其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b,或c中的至少一项,可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。[0302]如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。[0303]另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。[0304]在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。[0305]最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。当前第1页12当前第1页12
技术特征:
1.一种内存回收方法,其特征在于,包括:在内存回收过程中,对于扫描到的物理页面,检查所述物理页面的提前结束扫描状态,在所述物理页面的提前结束扫描状态为第一扫描状态的情况下,在每扫描完所述物理页面的一个虚拟内存区域vma或页表项pte后,判断所述物理页面的访问次数和/或vma属性是否达到提前结束扫描的目标要求;若所述物理页面的访问次数和/或vma属性达到目标要求,则结束所述物理页面的扫描流程,并将所述物理页面的提前结束扫描状态更新为第二扫描状态;其中,所述第一扫描状态用于指示所述物理页面在上一次的页面扫描过程中没有提前结束扫描流程,所述第二扫描状态用于指示所述物理页面在上一次的页面扫描过程中提前结束扫描流程。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:对于扫描到的物理页面,在所述物理页面的提前结束扫描状态为第二扫描状态的情况下,在扫描完所述物理页面的全部vma和pte后,结束所述物理页面的扫描流程,并将所述物理页面的提前结束扫描状态更新为第一扫描状态。3.根据权利要求1或2所述的方法,其特征在于,所述物理页面位于活跃页面链表中,所述目标要求包括:所述物理页面的访问次数大于0,且所述物理页面为可执行的文件页。4.根据权利要求3所述的方法,其特征在于,所述物理页面为可执行的文件页包括:所述物理页面为文件页,且所述物理页面的至少一个vma具有可执行权限;所述检查所述物理页面的提前结束扫描状态,在所述物理页面的提前结束扫描状态为第一扫描状态的情况下,在每扫描完所述物理页面的一个虚拟内存区域vma或页表项pte后,判断所述物理页面的访问次数和/或vma属性是否达到提前结束扫描的目标要求,包括:检查所述物理页面的提前结束扫描状态,并判断所述物理页面是否是文件页;在确定所述物理页面的提前结束扫描状态为所述第一扫描状态,并且确定所述物理页面为文件页的情况下,在每扫描完所述物理页面的一个vma或pte后,判断是否满足所述物理页面的访问次数大于0,且所述物理页面的至少一个vma具有可执行权限。5.根据权利要求1所述的方法,其特征在于,所述物理页面位于非活跃页面链表中,所述目标要求包括:所述物理页面存在被锁的vma,或者,所述物理页面的访问次数大于1。6.根据权利要求1-5任一项所述的方法,其特征在于,所述提前结束扫描状态是根据所述物理页面的目标状态标志位确定的。7.根据权利要求1-6任一项所述的方法,其特征在于,所述若所述物理页面的访问次数和vma属性达到目标要求,则结束所述物理页面的扫描流程,并将所述物理页面的提前结束扫描状态更新为第二扫描状态,包括:若所述物理页面的访问次数和/或vma属性达到目标要求,则结束所述物理页面的扫描流程,并判断是否遍历完了所述物理页面的全部vma和pte;在未遍历完所述物理页面的全部vma和pte的情况下,将所述物理页面的提前结束扫描状态更新为第二扫描状态。8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:确定所述物理页面的回收策略,并执行所述回收策略。9.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器用于存储计算机程
序;所述处理器用于在调用所述计算机程序时执行如权利要求1-8任一项所述的方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的方法。11.一种计算机程序产品,其特征在于,当计算机程序产品在电子设备上运行时,使得电子设备执行如权利要求1-8任一项所述的方法。12.一种芯片系统,其特征在于,所述芯片系统包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现如权利要求1-8任一项所述的方法。

技术总结
本申请提供一种内存回收方法和电子设备,涉及电子设备技术领域,其中,该方法包括:在内存回收过程中,对于扫描到的物理页面,检查物理页面的提前结束扫描状态,在物理页面的提前结束扫描状态为第一扫描状态的情况下,在每扫描完物理页面的一个VMA或PTE后,判断物理页面的访问次数和/或VMA属性是否达到提前结束扫描的目标要求;若物理页面的访问次数和VMA属性达到目标要求,则结束物理页面的扫描流程,并将物理页面的提前结束扫描状态更新为第二扫描状态。本申请提供的技术方案可以缩短页面扫描过程的耗时,提高内存回收速度。提高内存回收速度。提高内存回收速度。


技术研发人员:龚晨
受保护的技术使用者:华为技术有限公司
技术研发日:2022.04.29
技术公布日:2023/8/1
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐