页面回收方法、装置、终端及存储介质
文献发布时间:2023-06-19 09:27:35
技术领域
本申请属于终端技术领域,具体而言,涉及一种页面回收方法、装置、终端及存储介质。
背景技术
随着科学技术的发展,终端支持的操作系统也迅速发展,使用户的生活更加方便。例如,Linux系统的迅速发展也不断丰富用户的生活。在Linux系统中,若数据可以保存在磁盘中,当内存不足时,Linux系统可以将这些数据写在磁盘中,这些数据在内存中占用的页面就会成为空闲页面,该空闲页面可以供给Linux系统继续使用。
发明内容
本申请实施例提供一种页面回收方法、装置、终端及存储介质,可以提高页面的回收效率。本申请实施例的技术方案如下:
第一方面,本申请实施例提供一种页面回收方法,所述方法包括:
检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收;
当所述非活跃页面链表的当前页面单位中存在回收失败的页面时,将所述回收失败的页面添加至临时页面链表;
获取所述非活跃页面链表的当前页面单位的下一个页面单位,将所述下一个页面单位作为所述当前页面单位,并执行所述当所述非活跃页面链表的当前页面单位中存在回收失败的页面时,将所述回收失败的页面添加至临时页面链表的步骤。
第二方面,本申请实施例提供一种页面回收装置,所述装置包括:
页面回收单元,用于检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收;
页面添加单元,用于当所述非活跃页面链表的当前页面单位中存在回收失败的页面时,将所述回收失败的页面添加至临时页面链表;
页面单位获取单元,用于获取所述非活跃页面链表的当前页面单位的下一个页面单位,将所述下一个页面单位作为所述当前页面单位,并执行所述当所述非活跃页面链表的当前页面单位中存在回收失败的页面时,将所述回收失败的页面添加至临时页面链表的步骤。
第三方面,本申请实施例提供一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,其中,上述计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在本申请一个或多个实施例中,在检测到Linux系统的内存不足时,可以对非活跃页面链表包含的非活跃页面进行页面回收,当非活跃页面链表的当前页面单位中存在回收失败的页面时,可以将回收失败的页面添加至临时页面链表,以便在非活跃页面链表的当前页面单位的下一个页面单位进行页面回收时,可以不对回收失败的页面进行回收,可以减少下一个页面单位的页面回收时间,简化页面回收步骤,可以减少非活跃页面链表的页面回收时长,进而可以提高页面的回收效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出应用于本申请实施例的页面回收方法的系统架构图;
图2示出本申请实施例的一种页面回收方法的流程示意图;
图3示出本申请实施例的一种页面回收方法的流程示意图;
图4示出本申请实施例的一种页面回收方法的流程示意图;
图5示出本申请实施例的一种页面回收方法的流程示意图;
图6示出本申请实施例的一种页面回收方法的流程示意图;
图7示出本申请实施例的一种页面回收方法的流程示意图;
图8示出本申请实施例的一种页面回收装置的结构示意图;
图9示出本申请实施例的一种页面回收装置的结构示意图;
图10示出本申请实施例的一种页面回收装置的结构示意图;
图11示出本申请实施例的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅为本申请实施例的一部分,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
图1示出应用于本申请实施例的页面回收方法的系统架构图。如图1所示,Linux系统可以设置在终端中,该终端包括但不限于个人电脑、移动设备等。该终端中设置有与Linux系统对应的内存。磁盘可以设置在外设的虚拟存储器中,还可以设置在与Linux系统设置在同一终端中。当磁盘设置在外设的虚拟存储器200中时,终端100和该虚拟存储器200可以通过IO接口进行连接,使得终端100可以从虚拟存储器200中读取待写页面,该待写页面包括但不限于文件页面和匿名页面等。
根据一些实施例,在Linux系统的内存不足,Linux系统进行页面回收时,可以针对Linux系统中可回收的页面进行回收,可以减轻Linux系统的负担,使Linux系统的运行效率更高。例如,Linux系统中存在一个频繁访问但处于可回收状态的页面时,在内存不足时,终端可以对该页面进行回收,但是由于该页面会被频繁访问,因此该页面在回收之后会立马访问,终端需要将页面从磁盘中读取到Linux系统的内存中,对该页面再进行一次读写操作,会加重Linux系统的负担,使得Linux系统的运行效率降低。页面回收链表应运而生,页面回收链表可以将预设时长内未访问的页面添加至页面回收链表中,使得终端进行页面回收时,可以在页面回收链表中进行回收,不会对频繁访问的页面进行页面回收。
易于理解的是,当内存不足时,终端会对预设时长内未访问的页面进行回收,但是当当前终端的输入/输出IO负载较高时,对该页面的回收会增加终端的IO负载,使得终端页面回收的速度降低,进而出现页面回收效率较低的问题。
根据一些实施例,终端中页面回收链表的数量为至少一个。例如终端中每个内存控制子系统(Memory control groups,Memcg)可以对应一个页面回收链表。但是终端在页面回收链表中进行页面回收时,终端每次会对一个页面单位进行页面扫描,在扫描到可回收页面时,会对该可回收页面进行回收。但是,当页面回收链表中存在不可以回收页面时,终端每次以一个页面单位扫描时都会扫描到该不可回收页面,使得页面的回收步骤较多,页面回收速度较低,进而出现页面回收效率较低的问题。本申请实施例提供一种页面回收方法,可以提高页面的回收效率。
下面结合具体的实施例对本申请进行详细说明。
在一个实施例中,如图2所示,特提出了一种页面回收方法,该方法可依赖于计算机程序实现,可运行于基于Linux系统的终端上上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。
其中,所述终端可以是具有Linux系统的电子设备,该电子设备包括但不限于:可穿戴设备、手持设备、个人电脑、平板电脑、车载设备、智能手机、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中终端设备可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personaldigital assistant,PDA)、5G网络或未来演进网络中的终端设备等。
具体的,该页面回收方法包括:
步骤S101,检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收。
根据一些实施例,Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,终端中的Linux系统可以对页面进行写操作,即Linux系统可以将该文件从磁盘中读取至Linux系统的内存中,对Linux系统的内存中的数据进行修改后,再将该数据写到磁盘中,以便完成对一个文件的写操作。该文件包括至少一个页面。
易于理解的是,非活跃页面链表包括但不限于非活跃文件页面链表和非活跃匿名页面链表等。非活跃页面链表是指预设时长内未访问页面的集合。终端例如可以将非活跃页面链表中的非活跃页面的PG_active标志设置为0,以表示该非活跃页面链表中包含的非活跃页面。
可选的,非活跃页面是指预设时长内未访问的页面。其中预设时长可以是终端基于时长设置指令设置的,还可以终端出厂时设置的。其中时长设置指令包括但不限于语音时长设置指令、点击时长设置指令、文字时长设置指令等。终端获取到Linux系统中的页面时,终端可以对该页面进行检测。在检测到预设时长内未访问该页面时,终端可以将该页面添加至非活跃页面链表中。
根据一些实施例,当终端检测到Linux系统的内存不足时,终端可以对非活跃页面链表包含的非活跃页面进行页面回收。终端可以获取Linux系统的内存,并对该内存进行判断。当终端判断到该内存不足时,终端可以获取非活跃页面链表,并对非活跃页面链表包含的非活跃页面进行页面回收。
步骤S102,当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表。
根据一些实施例,临时页面链表是用于暂时存储回收失败的页面的链表。终端对非活跃页面链表包含的非活跃页面进行页面回收时,终端可以以页面单位进行回收。该页面单位例如可以包括预设数量的页面。但是终端对非活跃页面的回收存在回收成功和回收失败的情况。
易于理解的是,终端检测到Linux系统的内存不足时,终端可以对非活跃页面链表包含的非活跃页面进行页面回收。终端对非活跃页面回收时,终端可以以页面单位进行回收。当前页面单位是指终端在进行页面回收时正在扫描的页面所在的单位,该当前页面单位并不特指某一固定单位。当终端对非活跃页面链表的当前页面单位进行页面回收时,终端可以检测该当前页面单位中是否存在回收失败的页面。当终端检测到当前页面单位中存在回收失败的页面时,终端可以将回收失败的页面添加至临时页面链表。
易于理解的是,当前页面单位中包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面时,终端检测到A7页面回收失败时,终端可以将A7页面添加至临时页面链表中。
步骤S103,获取非活跃页面链表的当前页面单位的下一个页面单位,将下一个页面单位作为当前页面单位,并执行当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表的步骤。
根据一些实施例,当终端对非活跃页面链表的当前页面单位中存在回收失败的页面,并将回收失败的页面添加至临时页面链表时,终端可以获取非活跃页面链表的当前页面单位的下一个页面单位。下一个页面单位中包含的页面是当前页面单位页面回收完成后非活跃页面链表中包含的剩余的非活跃页面中预设数量的页面。由于当终端将当前页面单位中回收失败的页面添加至临时页面链表,因此终端获取到的下一页面单位中不会包括所述回收失败的页面。
易于理解的是,当终端获取到当前页面单位的下一个页面单位时,终端可以将下一个页面单位作为当前页面单位,并执行当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表的步骤。当终端对下一页面单位中包含的页面进行回收时,终端不会对临时页面链表中的页面进行回收。
可选的,当终端获取到非活跃页面链表的当前页面单位的下一个页面单位时,终端可以对下一个页面单位中包含的页面进行页面回收。当终端检测到下一个页面单位中存在回收失败的页面时,终端可以将下一个页面单位中回收失败的页面添加至临时页面链表。例如,下一个页面单位中包括B1页面、B2页面、B3页面、B4页面、B5页面、B6页面和B7页面时,终端检测到B7页面回收失败时,终端可以将B7页面添加至临时页面链表中。
在本申请一个或多个实施例中,在检测到Linux系统的内存不足时,可以对非活跃页面链表包含的非活跃页面进行页面回收,当非活跃页面链表的当前页面单位中存在回收失败的页面时,可以将回收失败的页面添加至临时页面链表,以便在非活跃页面链表的当前页面单位的下一个页面单位进行页面回收时,可以不对当前回收单位中回收失败的页面进行回收,简化下一个页面单位的回收步骤,减少下一个页面单位的页面回收时间,可以减少非活跃页面链表的页面回收时长和回收步骤,进而可以提高页面的回收效率。
请参见图3,为本申请实施例提供了一种页面回收方法的流程示意图。如图3所示,本申请实施例的所述方法可以包括以下步骤S201-步骤S205。
步骤S201,在非活跃页面链表之后创建临时页面链表。
根据一些实施例,当终端在创建完成非活跃页面链表之后,终端可以在非活跃页面链表之后创建临时页面链表。终端在非活跃页面链表之后创建临时页面链表,可以在非活跃页面链表中存在回收失败的页面时,将回收失败的页面添加至临时页面链表,以便提高页面的回收效率。
易于理解的是,终端创建非活跃页面链表时,终端可以创建第一长度的非活跃页面链表。终端可以基于页面数量和页面的访问频率创建该第一长度的非活跃页面链表。当终端创建完成第一长度的非活跃页面链表之后,终端可以创建第二长度的临时页面链表。第一长度和第二长度不特指某一固定长度,该长度可以基于长度设置指令进行相应设置。
步骤S202,检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收。
具体过程如上所述,此处不再赘述。
根据一些实施例,请参见图4,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图4所示,本申请实施例的所述方法检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收时可以包括以下步骤S301-步骤S302。步骤S301,获取Linux系统的空闲内存页面;步骤S302,在空闲内存页面的数量小于第一数量阈值时,对非活跃页面链表中包含的非活跃页面进行页面回收。
根据一些实施例,当终端检测Linux系统的内存是否足够时,终端可以获取Linux系统的空闲内存页面,即终端可以获取Linux系统中未进行写操作的空闲内存页面。当终端获取到该空闲内存页面时,终端可以检测空闲内存页面的数量是否小于第一数量阈值。当终端检测到空闲内存页面的数量小于第一数量阈值时,终端可以对非活跃页面链表中包含的非活跃页面进行页面回收。
易于理解的是,第一数量阈值仅仅是指Linux系统中空闲内存页面对应的数量阈值,并不特指某一固定数量阈值。例如终端基于阈值设置指令设置的第一数量阈值可以是15页,终端基于阈值设置指令设置的第一数量阈值还可以是25页。其中该阈值设置指令包括但不限于语音阈值设置指令、文字阈值设置指令和点击阈值设置指令等。
可选的,第一数量阈值例如可以是10页。当终端获取到Linux系统的空闲内存页面为A1页面、A2页面和A3页面时,终端检测到空闲内存页面的数量3页小于第一数量阈值10页时,终端可以对非活跃页面链表中包含的非活跃页面进行页面回收。
根据一些实施例,请参见图5,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图5所示,本申请实施例的所述方法检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收时可以包括以下步骤S401-步骤S402。步骤S401,在检测到Linux系统的内存不足时,获取非活跃页面链表的页面数量;步骤S402,在页面数量小于第二数量阈值时,将活跃页面链表中的页面添加至非活跃页面链表中,对非活跃页面链表中包含的非活跃页面中进行页面回收。
根据一些实施例,请参见图6,当终端检测到Linux系统的内存不足时,终端会进行内存回收,即终端可以获取非活跃页面链表。此时,终端可以获取非活跃页面链表的页面数量,即终端可以获取非活跃页面中包含的非活跃页面的页面数量。当终端获取到该页面数量时,终端可以检测该页面数量与第二数量阈值的大小关系。当终端检测到该页面数量小于第二数量阈值时,终端可以将活跃页面链表中的页面添加至非活跃页面链表中。当非活跃页面链表中的页面数量等于第二数量阈值时,终端可以对非活跃页面链表中包含的非活跃页面中进行页面回收。
易于理解的是,终端将非活跃页面链表中包含的非活跃页面中进行页面回收时,终端可以获取页面数量和第二数量阈值之间的差值数量。当终端获取到该差值数量时,终端可以将活跃页面链表中差值数量的页面添加至非活跃页面链表中。终端将活跃页面链表中差值数量的页面添加至非活跃页面链表中时,终端可以从活跃页面链表中从尾至头的顺序从该差值数量的页面添加至非活跃页面链表中。其中,终端可以按照访问的时间点将页面添加至活跃页面链表中。活跃页面链表中尾部的页面为终端访问过较早的时间点,因此活跃页面链表中的页面包括但不限于活跃页面和非活跃页面。
可选的,第二数量阈值例如可以是20页。终端获取到的非活跃页面中包含的非活跃页面的页面数量例如可以是10页。当终端检测到该页面数量10页小于第二数量阈值20页时,终端可以将活跃页面链表中的页面添加至非活跃页面链表中,即终端可以将活跃页面链表中的10页页面添加至非活跃页面链表中。
根据一些实施例,请参见图7,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图7所示,本申请实施例的所述方法当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表之后还可以包括以下步骤S501-步骤S505。步骤S501,在非活跃页面链表的页面回收完成时,获取Linux系统的内存中空闲内存页面的数量;步骤S502,在内存中空闲内存页面的数量大于第一数量阈值时,结束页面回收;步骤S503,每隔预设时长获取一次回收失败的页面的页面状态信息;步骤S504,在页面状态信息符合预设要求时,将回收失败的页面添加至非活跃页面链表中;步骤S505,在内存中空闲内存页面的数量小于第一数量阈值时,对临时页面链表的页面进行回收。
根据一些实施例,当非活跃页面链表的当前页面单位中存在回收失败的页面,并将回收失败的页面添加至临时页面链表之后,终端可以检测非活跃页面链表的页面回收是否完成。当终端检测到非活跃页面链表的页面回收完成时,终端可以获取Linux系统的内存中空闲内存页面的数量。当终端获取到Linux系统的内存中空闲内存页面的数量时,终端可以检测该Linux系统的内存中空闲内存页面的数量与第一数量阈值之间的大小关系。当终端检测到该Linux系统的内存中空闲内存页面的数量大于第一数量阈值时,终端可以结束页面回收。
易于理解的是,第一数量阈值例如可以是10页。当终端检测到非活跃页面链表的页面回收完成时,终端获取到的Linux系统的内存中空闲内存页面的数量例如可以是15页。当终端检测到该Linux系统的内存中空闲内存页面的数量15页大于第一数量阈值10页时,终端可以结束页面回收。
根据一些实施例,当非活跃页面链表的页面回收完成时,终端可以获取Linux系统的内存中空闲内存页面的数量。在终端检测到内存中空闲内存页面的数量大于第一数量阈值时,终端可以结束页面回收。此时,终端可以每隔预设时长获取一次回收失败的页面的页面状态信息。终端获取到该回收失败的页面的页面状态信息时,终端可以检测该回收失败的页面的页面状态信息是否符合预设要求。在终端检测到该页面状态信息符合预设要求时,终端可以将回收失败的页面添加至非活跃页面链表中。终端将回收失败的页面添加至非活跃页面链表中,终端可以在对非活跃页面链表中包含的非活跃页面进行页面回收时,可以对该页面进行回收,可以减少在输入/输出IO负载较高时,对长时间未访问的页面进行回收加重终端的输入/输出IO负载的情况,可以提高页面回收的速度,进而可以提高页面的回收效率。
易于理解的是,预设时长例如可以是5分钟。终端将当前页面单位中回收失败的页面添加至临时页面链表时,终端可以每隔5分钟获取一次回收失败的页面的页面状态信息。当终端获取到该回收失败的页面的页面状态信息为可回收状态时,终端可以将该回收失败的页面添加至非活跃页面链表中。
根据一些实施例,当终端检测到非活跃页面链表的当前页面单位中存在回收失败的页面,并将回收失败的页面添加至临时页面链表之后,终端可以获取Linux系统的内存中空闲内存页面的数量。当终端检测到内存中空闲内存页面的数量小于第一数量阈值时,终端可以获取临时页面链表。在检测到临时页面链表中存在可回收页面时,终端可以对临时页面链表的页面进行回收。由于终端在对非活跃页面链表包含的非活跃页面进行回收的过程中,添加至临时页面链表中的回收失败的页面的页面状态信息会变化,因此终端可以对临时页面链表的页面进行回收,以使Linux系统的内存中空闲内存页面的数量大于第一数量阈值。
易于理解的是,第一数量阈值例如可以是10页。当终端检测到非活跃页面链表的页面回收完成时,终端获取到的Linux系统的内存中空闲内存页面的数量例如可以是8页。当终端检测到该Linux系统的内存中空闲内存页面的数量8页小于第一数量阈值10页时,终端可以对临时页面链表的页面进行回收。当终端对临时页面链表的页面回收完成时,终端可以再次获取Linux系统的内存中空闲内存页面的数量。当终端检测到该Linux系统的内存中空闲内存页面的数量大于第一数量阈值时,终端可以结束页面回收。当终端检测到该Linux系统的内存中空闲内存页面的数量小于第一数量阈值时,终端可以发出提示信息,以便用户可以及时知道Linux系统的内存不足的信息。
步骤S203,当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表。
具体过程如上所述,此处不再赘述。
根据一些实施例,回收失败的页面包括但不限于正在回写的页面、用户设定的不可回收的页面等等。
步骤S204,获取非活跃页面链表的当前页面单位的下一个页面单位,将下一个页面单位作为当前页面单位,并执行当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表的步骤。
具体过程如上所述,此处不再赘述。
易于理解的是,当终端检测到当前页面单位的页面回收完成时,终端可以检测非活跃页面链表中是否存在下一个页面单位。当终端检测到非活跃页面链表中存在下一个页面单位时,终端可以获取下一个页面单位,并将下一个页面单位作为当前页面单位,并执行当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表的步骤。
步骤S205,检测到Linux系统的内存不足,且非活跃页面链表中不包含非活跃页面时,对临时页面链表的页面进行回收。
根据一些实施例,当终端检测到Linux系统的内存不足时,终端可以获取非活跃页面链表。当终端检测到该非活跃页面链表中不包含非活跃页面时,终端可以直接对临时页面链表中包含的页面进行回收,以使Linux系统的内存中空闲内存页面的数量大于第一数量阈值。
根据一些实施例,当终端对临时页面链表的页面进行回收时,终端可以将临时页面链表的页面释放回非活跃链表中,对非活跃链表中的页面进行回收。例如在终端检测到Linux系统的内存不足,且非活跃页面链表中不包含非活跃页面,对临时页面链表的页面进行回收时,终端可以将临时页面链表中的页面释放会非活跃页面链表中,当终端对非活跃页面链表中包含的页面进行页面回收时,可以对临时页面链表释放至非活跃页面链表的页面进行页面回收,可以减少页面回收次数,可以在对非活跃页面进行回收时对临时页面链表释放的页面同时进行回收,可以提高页面回收效率。
易于理解的是,当终端对临时页面链表中的页面进行回收时,终端可以直接对临时页面链表中的页面进行回收,不需要将该页面释放回非活跃页面链表中,可以减少页面释放时间,减少页面的回收时间,进而可以提高页面的回收效率。
在本申请一个或多个实施例中,终端在非活跃页面链表之后创建临时页面链表,可以在非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表,以便在非活跃页面链表的当前页面单位的下一个页面单位进行页面回收时,可以不对当前回收单位中回收失败的页面进行回收,简化下一个页面单位的回收步骤,减少下一个页面单位的页面回收时间,可以减少非活跃页面链表的页面回收时长和回收步骤,进而可以提高页面的回收效率。其次,当终端检测到Linux系统的内存不足,且非活跃页面链表中不包含非活跃页面时,终端可以对临时页面链表的页面进行回收,以使Linux系统的内存充足,可以在提高页面的回收效率的同时满足终端的内存需求,可以提高Linux系统的使用方便性。
下面将结合附图8,对本申请实施例提供的页面回收装置进行详细介绍。需要说明的是,附图8所示的页面回收装置,用于执行本申请图2-图7所示实施例的方法,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请图2-图7所示的实施例。
请参见图8,其示出本申请实施例的页面回收装置的结构示意图。该页面回收装置800可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。根据一些实施例,该页面回收装置800包括页面回收单元801、页面添加单元802和页面单位获取单元803,具体用于:
页面回收单元801,用于检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收;
页面添加单元802,用于当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表;
页面单位获取单元803,用于获取非活跃页面链表的当前页面单位的下一个页面单位,将下一个页面单位作为当前页面单位,并执行当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表的步骤。
根据一些实施例,图9示出本申请实施例的页面回收装置的结构示意图。如图9所示,页面回收单元801包括页面获取子单元8011和页面回收子单元8012,该页面回收单元801用于检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收时,页面获取子单元8011用于获取Linux系统的空闲内存页面;该页面回收子单元8012用于在空闲内存页面的数量小于第一数量阈值时,对非活跃页面链表中包含的非活跃页面进行页面回收。
根据一些实施例,该页面回收单元801用于检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收时,具体用于:
在检测到Linux系统的内存不足时,获取非活跃页面链表的页面数量;
在页面数量小于第二数量阈值时,将活跃页面链表中的页面添加至非活跃页面链表中,对非活跃页面链表中包含的非活跃页面中进行页面回收。
根据一些实施例,该页面回收装置800包括还包括页面回收结束单元804,用于当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表之后,在非活跃页面链表的页面回收完成时,获取Linux系统的内存中空闲内存页面的数量;
在内存中空闲内存页面的数量大于第一数量阈值时,结束页面回收。
根据一些实施例,页面回收单元801还用于在非活跃页面链表的页面回收完成时,获取Linux系统的内存中空闲内存页面的数量之后,在内存中空闲内存页面的数量小于第一数量阈值时,对临时页面链表的页面进行回收。
根据一些实施例,图10示出本申请实施例的页面回收装置的结构示意图。如图10所示,页面添加单元802包括信息获取子单元8021和页面回收子单元8022,信息获取子单元8021用于在内存中空闲内存页面的数量大于第一数量阈值时,结束页面回收之后,每隔预设时长获取一次回收失败的页面的页面状态信息;
页面回收子单元8022用于在页面状态信息符合预设要求时,将回收失败的页面添加至非活跃页面链表中。
根据一些实施例,该页面回收装置800包括还包括链表创建单元805,用于检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收之前,在非活跃页面链表之后创建临时页面链表。
根据一些实施例,页面回收单元801,还用于检测到Linux系统的内存不足,且非活跃页面链表中不包含非活跃页面时,对临时页面链表的页面进行回收。
根据一些实施例,页面回收单元801,还用对临时页面链表的页面进行回收时,具体用于:
将临时页面链表的页面释放回非活跃链表中,对非活跃链表中的页面进行回收。
在本申请一个或多个实施例中,在检测到Linux系统的内存不足时,页面回收单元可以对非活跃页面链表包含的非活跃页面进行页面回收,当非活跃页面链表的当前页面单位中存在回收失败的页面时,页面添加单元可以将回收失败的页面添加至临时页面链表,以使页面单位获取单元在获取到非活跃页面链表的当前页面单位的下一个页面单位,可以将下一个页面单位作为当前页面单位,并执行当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表的步骤。因此在非活跃页面链表的当前页面单位的下一个页面单位进行页面回收时,页面回收装置可以不对当前回收单位中回收失败的页面进行回收,简化下一个页面单位的回收步骤,减少下一个页面单位的页面回收时间,可以减少非活跃页面链表的页面回收时长和回收步骤,进而可以提高页面的回收效率。
请参见图11,为本申请实施例提供的一种终端的结构示意图。如图11所示,所述终端1100可以包括:至少一个处理器1101,至少一个网络接口1104,用户接口1103,存储器1105,至少一个通信总线1102。
其中,通信总线1102用于实现这些组件之间的连接通信。
其中,用户接口1103可以包括显示屏(Display)和GPS,可选用户接口1103还可以包括标准的有线接口、无线接口。
其中,网络接口1104可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器1101可以包括一个或者多个处理核心。处理器1101利用各种借口和线路连接整个终端1100内的各个部分,通过运行或执行存储在存储器1105内的指令、程序、代码集或指令集,以及调用存储在存储器1105内的数据,执行终端1100的各种功能和处理数据。可选的,处理器1101可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1101可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1101中,单独通过一块芯片进行实现。
其中,存储器1105可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器1105包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1105可用于存储指令、程序、代码、代码集或指令集。存储器1105可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1105可选的还可以是至少一个位于远离前述处理器1101的存储装置。如图11所示,作为一种计算机存储介质的存储器1105中可以包括操作系统、网络通信模块、用户接口模块以及用于页面回收的应用程序。
在图11所示的终端1100中,用户接口1103主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1101可以用于调用存储器1105中存储的页面回收的应用程序,并具体执行以下操作:
检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收;
当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表;
获取非活跃页面链表的当前页面单位的下一个页面单位,将下一个页面单位作为当前页面单位,并执行当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表的步骤。
根据一些实施例,处理器1101用于执行检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收时,具体用于执行以下步骤:
获取Linux系统的空闲内存页面;
在空闲内存页面的数量小于第一数量阈值时,对非活跃页面链表中包含的非活跃页面进行页面回收。
根据一些实施例,处理器1101用于执行检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收时,具体用于执行以下步骤:
在检测到Linux系统的内存不足时,获取非活跃页面链表的页面数量;
在页面数量小于第二数量阈值时,将活跃页面链表中的页面添加至非活跃页面链表中,对非活跃页面链表中包含的非活跃页面中进行页面回收。
根据一些实施例,处理器1101用于执行当非活跃页面链表的当前页面单位中存在回收失败的页面时,将回收失败的页面添加至临时页面链表之后,还具体用于执行以下步骤:
在非活跃页面链表的页面回收完成时,获取Linux系统的内存中空闲内存页面的数量;
在内存中空闲内存页面的数量大于第一数量阈值时,结束页面回收。
根据一些实施例,处理器1101用于执行在非活跃页面链表的页面回收完成时,获取Linux系统的内存中空闲内存页面的数量之后,还具体用于执行以下步骤:
在内存中空闲内存页面的数量小于第一数量阈值时,对临时页面链表的页面进行回收。
根据一些实施例,处理器1101用于执行在内存中空闲内存页面的数量大于第一数量阈值时,结束页面回收之后,还具体用于执行以下步骤:
每隔预设时长获取一次回收失败的页面的页面状态信息;
在页面状态信息符合预设要求时,将回收失败的页面添加至非活跃页面链表中。
根据一些实施例,处理器1101用于执行检测到Linux系统的内存不足时,对非活跃页面链表包含的非活跃页面进行页面回收之前,还具体用于执行以下步骤:
在非活跃页面链表之后创建临时页面链表。
根据一些实施例,处理器1101还具体用于执行以下步骤:
检测到Linux系统的内存不足,且非活跃页面链表中不包含非活跃页面时,对临时页面链表的页面进行回收。
根据一些实施例,处理器1101用于执行对临时页面链表的页面进行回收时,具体用于执行以下步骤:
将临时页面链表的页面释放回非活跃链表中,对非活跃链表中的页面进行回收。
在本申请一个或多个实施例中,在检测到Linux系统的内存不足时,终端可以对非活跃页面链表包含的非活跃页面进行页面回收,当非活跃页面链表的当前页面单位中存在回收失败的页面时,终端可以将回收失败的页面添加至临时页面链表,以便在非活跃页面链表的当前页面单位的下一个页面单位进行页面回收时,终端可以不对当前回收单位中回收失败的页面进行回收,简化下一个页面单位的回收步骤,减少下一个页面单位的页面回收时间,可以减少非活跃页面链表的页面回收时长和回收步骤,进而可以提高页面的回收效率。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种页面回收方法的部分或全部步骤。
本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(Field-ProgrammaBLE GateArray,FPGA)、集成电路(Integrated Circuit,IC)等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
- 页面回收方法、装置、终端及存储介质
- 移动终端功能页面启动方法、装置、移动终端及存储介质