CN111078586B - 内存回收方法、装置、存储介质及电子设备 - Google Patents

内存回收方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN111078586B
CN111078586B CN201911259875.2A CN201911259875A CN111078586B CN 111078586 B CN111078586 B CN 111078586B CN 201911259875 A CN201911259875 A CN 201911259875A CN 111078586 B CN111078586 B CN 111078586B
Authority
CN
China
Prior art keywords
memory
target
pages
page
free
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
Application number
CN201911259875.2A
Other languages
English (en)
Other versions
CN111078586A (zh
Inventor
彭冬炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oppo Chongqing Intelligent Technology Co Ltd
Original Assignee
Oppo Chongqing Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oppo Chongqing Intelligent Technology Co Ltd filed Critical Oppo Chongqing Intelligent Technology Co Ltd
Priority to CN201911259875.2A priority Critical patent/CN111078586B/zh
Publication of CN111078586A publication Critical patent/CN111078586A/zh
Application granted granted Critical
Publication of CN111078586B publication Critical patent/CN111078586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种内存回收方法、装置、存储介质及电子设备,其中内存回收方法包括:检测空闲内存空间的大小是否小于第一预设阈值;若是,则根据所述空闲内存空间的大小确定待回收的第一目标页数;按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页;对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。本实施例提供的内存回收方案,由于干净内存页比脏内存页容易回收,因此当检测到空闲内存容量小于第一预设阈值时,电子设备优先选择容易回收的干净内存页作为目标内存页进行回收处理,可以提高内存回收的效率。

Description

内存回收方法、装置、存储介质及电子设备
技术领域
本申请属于通信技术领域,尤其涉及一种内存回收方法、装置、存储介质及电子设备。
背景技术
内存管理是系统的核心技术之一,对提高系统的用户体验和系统运行的稳定性具有关键作用。当内存紧张时,系统会出现卡顿、运行出错、崩溃等一系列问题。相关技术中,可通过内存回收缓解内存紧张,但是常规的内存回收方式存在回收效率低的问题。
发明内容
本申请实施例提供一种内存回收方法、装置、存储介质及电子设备,可以提高内存回收的效率。
第一方面,本申请实施例提供一种内存回收方法,包括:
检测空闲内存空间的大小是否小于第一预设阈值;
若是,则根据所述空闲内存空间的大小确定待回收的第一目标页数;
按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页;
对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。
第二方面,本申请实施例提供一种内存回收装置,包括:
检测模块,用于检测空闲内存空间的大小是否小于第一预设阈值;
第一确定模块,用于若所述空闲内存空间的大小小于所述第一预设阈值,则根据所述空闲内存空间的大小确定待回收的第一目标页数;
第二确定模块,用于按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页;
第一处理模块,用于对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。
第三方面,本申请实施例提供的存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的内存回收方法。
第四方面,本申请实施例提供的电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的内存回收方法。
本申请实施例提供的内存回收方案,由于干净内存页比脏内存页容易回收,因此当检测到空闲内存容量小于第一预设阈值时,电子设备根据空闲内存空间的大小确定待回收的第一目标页数,然后按照干净内存页优先于脏内存页的顺序,基于第一目标页数从非空闲内存空间中确定出目标内存页,最后对目标内存页进行回收处理,以得到大小不小于第一预设阈值的空闲内存空间。即电子设备优先选择容易回收的干净内存页作为目标内存页进行回收处理,可以提高内存回收的效率。
附图说明
下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其有益效果显而易见。
图1是本申请实施例提供的内存回收方法的第一流程示意图。
图2是本申请实施例提供的内存回收方法的第二流程示意图。
图3是本申请实施例提供的内存回收方法中的第一排序和第二排序的示意图。
图4是本申请实施例提供的内存回收装置的结构示意图。
图5是本申请实施例提供的电子设备的第一结构示意图。
图6是本申请实施例提供的电子设备的第二结构示意图。
具体实施方式
以下的说明是基于所例示的本申请具体实施例,其不应被视为限制本申请未在此详述的其它具体实施例。本文所使用的术语「模块」可看做为在该运算系统上执行的软件对象。本文不同模块、引擎及服务可看做为在该运算系统上的实施对象。
本申请实施例提供一种内存回收方法,该内存回收方法的执行主体可以是本申请实施例提供的内存回收装置,或者集成了该内存回收装置的电子设备。其中,该电子设备可以是智能手机、平板电脑、掌上电脑(PDA,Personal Digital Assistant)等。
以下进行具体分析说明。
请参阅图1,图1为本申请实施例提供的内存回收方法的第一流程示意图,该内存回收方法可以包括以下步骤:
101、检测空闲内存空间的大小是否小于第一预设阈值。
本申请实施例中,电子设备可以获取空闲内存空间的大小,判断空闲内存空间的大小是否小于第一预设阈值。若空闲内存空间的大小小于第一预设阈值,则判定该电子设备的内存紧张,即需要进行内存回收。若空闲内存空间的大小大于或等于第一预设阈值,则判定该电子设备的内存充足,即不需要进行内存回收。
其中,第一预设阈值预先设置在电子设备中,是保持电子设备正常运行的最低空闲内存空间的大小。
可以理解的是,电子设备的内存空间包括空闲内存空间和非空闲内存空间。电子设备中的一些应用程序在运行时,电子设备会为这些应用程序进行内存空间分配。空闲内存空间是指处于空闲状态的内存空间,非空闲内存空间是指处于使用状态的内存空间。
102、若是,则根据空闲内存空间的大小确定待回收的第一目标页数。
本申请实施例中,在检测空闲内存空间的大小是否小于第一预设阈值之后,若空闲内存空间的大小小于第一预设阈值,此时判定该电子设备的内存紧张,则电子设备根据空闲内存空间的大小确定待回收的第一目标页数,作为回收处理的目标量。
其中,空闲内存空间的大小是指处于空闲状态的内存空间的大小。例如,电子设备具有大小为256M的内存空间,其中有200M的内存空间处于使用状态,剩余56M的内存空间处于空闲状态,则空闲内存空间的大小为56M。
在一些实施例中,在根据空闲内存空间的大小确定待回收的第一目标页数时,电子设备可以根据空闲内存空间的大小和第三预设阈值,获取需要回收的第一目标内存量,其中,第三预设阈值大于或等于第一预设阈值,第三预设阈值预先设置在电子设备中。然后基于第一目标内存量和内存页的大小,计算待回收的第一目标页数。其中,内存页的大小是预先设置的数值,如4KB。
例如,电子设备的空闲内存空间的大小为56M,第三预设阈值为110M,则需要回收的目标内存量为54M,若一个内存页的大小为4KB,则待回收的第一目标页数为:(54M×1024KB/M)÷4KB=13824。
在一些实施例中,在根据空闲内存空间的大小确定待回收的第一目标页数时,电子设备可以确定后台进程的数量,获取与后台进程数量对应的第四预设阈值,其中,后台进程数量与第四预设阈值成正相关,第四预设阈值大于或等于第一预设阈值。然后根据空闲内存空间的大小和第四预设阈值获取需要回收的第二目标内存量。接着基于第二目标内存量和内存页的大小,计算待回收的第一目标页数。可以理解的是,第四预设阈值是在一定范围内进行变动的数值。
103、按照干净内存页优先于脏内存页的顺序,基于第一目标页数从非空闲内存空间中确定出目标内存页。
本申请实施例中,在确定待回收的第一目标页数之后,电子设备按照干净内存页优先于脏内存页的顺序,从非空闲内存空间中确定出数量等于第一目标页数的内存页,作为目标内存页。
其中,内存页是非空闲内存空间的存储单位,非空闲内存空间包括干净内存页和脏内存页。干净内存页为非空闲内存空间中处于读取状态的内存页,干净内存页可以为一个或多个内存页。脏内存页为非空闲内存空间中处于写入状态的内存页,脏内存页可以为一个或多个内存页。
需要说明的是,因为电子设备可以直接对干净内存页进行回收处理,而在对脏内存页进行回收处理前,还需要将其进行存储,所以相比于干净内存页的处理时间,脏内存页的处理时间更长。该方案中优先选取干净内存页作为目标内存页,可以提高内存回收的效率。
104、对目标内存页进行回收处理,以得到大小不小于第一预设阈值的空闲内存空间。
本申请实施例中,在确定出目标内存页之后,电子设备可以基于回收进程对目标内存页进行回收处理,以得到大小不小于第一预设阈值的空闲内存空间,从而保证电子设备的正常运行。
由上可知,本申请实施例提供的内存回收方法,当检测到空闲内存容量小于第一预设阈值时,根据空闲内存空间的大小确定待回收的第一目标页数,然后按照干净内存页优先于脏内存页的顺序,基于第一目标页数从非空闲内存空间中确定出目标内存页,最后对目标内存页进行回收处理,以得到大小不小于第一预设阈值的空闲内存空间。即优先选择容易回收的干净内存页作为目标内存页进行回收处理,可以提高内存回收的效率。
请参阅图2,图2为本申请实施例提供的内存回收方法的第二流程示意图,该内存回收方法可以包括以下步骤:
201、检测空闲内存空间的大小是否小于第一预设阈值。
本申请实施例中,电子设备可以获取空闲内存空间的大小,判断空闲内存空间的大小是否小于第一预设阈值。若空闲内存空间的大小小于第一预设阈值,则判定该电子设备的内存紧张,即需要进行内存回收。若空闲内存空间的大小大于或等于第一预设阈值,则判定该电子设备的内存充足,即不需要进行内存回收。
在一些实施例中,检测空闲内存空间的大小是否小于第一预设阈值之前,电子设备可以判断是否检测到内存分配请求;若是,执行所述检测空闲内存空间的大小是否小于第一预设阈值。若否,则电子设备不执行操作。即电子设备在检测到内存分配请求时,才会触发电子设备检测空闲内存空间的大小是否小于第一预设阈值。
其中,电子设备中的一些应用程序在启动或运行时,可能会有连续的多次内存分配请求。
需要说明的是,当检测空闲内存空间的大小不小于第一预设阈值时,电子设备可以基于所述空闲内存空间响应所述内存分配请求。当检测空闲内存空间的大小小于第一预设阈值时,电子设备可以在执行202、203、204之后,基于所述空闲内存空间响应所述内存分配请求,或者可以在执行202、205、206之后,基于所述空闲内存空间响应所述内存分配请求,或者可以在执行202、205、206、207之后,基于所述空闲内存空间响应所述内存分配请求,或者在执行202、205、206、207、208之后,基于所述空闲内存空间响应所述内存分配请求。
在一些实施例中,检测空闲内存空间的大小是否小于第一预设阈值之前,电子设备可以判断当前时刻与上次检测空闲内存空间的大小是否小于第一预设阈值的时刻之间的时间间隔是否大于或等于预设时长;若是,则执行所述检测空闲内存空间的大小是否小于第一预设阈值。
其中,预设时长可以根据需要设置,预设时长可以是固定数值也可以是变动数值。比如,设置预设时长t=300s,若当前时刻与上次检测空闲内存空间的大小是否小于第一预设阈值的时刻之间的时间间隔是否大于或等于300s,电子设备检测空闲内存空间的大小是否小于第一预设阈值。
202、若是,则根据空闲内存空间的大小确定待回收的第一目标页数。
本申请实施例中,在检测空闲内存空间的大小是否小于第一预设阈值之后,若空闲内存空间的大小小于第一预设阈值,此时判定该电子设备的内存紧张,则电子设备根据空闲内存空间的大小确定待回收的第一目标页数,作为回收处理的目标量。
203、若非空闲内存空间中的干净内存页的数量小于第一目标页数,则将干净内存页作为第一目标内存页,并从非空闲内存空间的脏内存页中确定出第二目标内存页。
本申请实施例中,在确定待回收的第一目标页数之后,按照干净内存页优先于脏内存页的顺序,电子设备可以判断非空闲内存空间中的干净内存页的数量是否小于第一目标页数。若是,此时只回收干净内存页不足以缓解内存紧张,需要回收全部干净内存页、以及部分或全部脏内存页以缓解内存紧张,则电子设备可以将干净内存页作为第一目标内存页,并从脏内存页中确定出第二目标内存页。其中,第一目标内存页和第二目标内存页构成目标内存页。目标内存页是进行回收处理的待处理对象。
在一些实施例中,从非空闲内存空间的脏内存页中确定出第二目标内存页时,电子设备可以确定非空闲内存空间的脏内存页中各内存页的分配时间;按照分配时间从先到后的顺序,从脏内存页中获取数量等于第二目标页数的内存页,作为第二目标内存页,其中,第二目标页数与干净内存页的数量之和等于第一目标页数。
需要说明的是,电子设备在检测到分配请求时,会基于该分配请求对空闲内存空间中的内存页进行分配。对于分配后的内存页,其分配时间可以指被分配的时刻或检测到分配请求的时刻。
在一些实施例中,从非空闲内存空间的脏内存页中确定出第二目标内存页时,电子设备可以确定非空闲内存空间的脏内存页对应的应用程序及分配时间;按照后台应用程序优先于前台应用程序的顺序,对脏内存页进行第一排序;基于第一排序的结果,按照分配时间从先到后的顺序分别对前台应用程序和后台应用程序对应的所述脏内存页进行第二排序;根据第二排序的结果,从前往后获取数量等于第二目标页数的内存页,作为第二目标内存页,其中,第二目标页数与干净内存页的数量之和等于第一目标页数。
例如,如图3所示,图3为本申请实施例提供的内存回收方法中的第一排序和第二排序的示意图。电子设备按照后台应用程序优先于前台应用程序的顺序,对脏内存页进行第一排序,此时对于应用程序为后台应用程序的多个内存页还未进行排序,对于应用程序为前台应用程序的多个内存页也未进行排序。因此,在初步排序的基础上,按照分配时间从先到后的顺序,对应用程序为后台应用程序的多个内存页进行排序,以及对应用程序为前台应用程序的多个内存页进行排序,即对脏内存页进行第二排序。
204、基于第一回收进程对第一目标内存页进行回收处理,基于第二回收进程对第二目标内存页进行存储处理以及回收处理。
本申请实施例中,在确定第一目标内存页和第二目标内存页之后,电子设备可以通过第一回收进程对第一目标内存页进行回收处理,如通过kswapd进程对第一目标内存页进行回收处理。以及通过第二回收进程对第二目标内存页进行存储处理和回收处理,如通过kdflush进程对第二目标内存页进行存储处理和回收处理。其中,第一回收进程和第二回收进程是两种不同的进程,第一回收进程主要用于回收干净内存页,第二回收进程主要用于回收脏内存页。
在一些实施例中,基于第一回收进程对第一目标内存页进行回收处理时,电子设备可以按照第一目标内存页中各内存页的最后访问时间从先到后的顺序,通过第一回收进程对第一目标内存页中各内存页进行回收处理。基于第二回收进程对第二目标内存页进行回收处理时,电子设备也可以根据第二目标内存页中各内存页的获取顺序,通过第二回收进程对第一目标内存页中各内存页进行回收处理。其中,最后访问时间是指电子设备对该内存页的数据最晚调用的时间。
另一种实施方式中,在确定第一目标内存页和第二目标内存页之后,电子设备可以通过第一回收进程对第一目标内存页进行回收处理,并通过第一回收进程对第二目标内存页进行存储处理和回收处理。其中,第一回收进程除用于回收干净内存页外,还用于回收脏内存页。
需要说明的是,相比于只采用第一回收进程对第一目标内存页和第二目标内存页进行处理的方式,采用两个进程分别对第一目标内存页和第二目标内存页进行处理的方式,可以进一步提高内存回收的效率。
205、若非空闲内存空间中的干净内存页的数量大于或等于第一目标页数,则根据第一目标页数从干净内存页中确定目标内存页。
本申请实施例中,在确定待回收的第一目标页数之后,按照干净内存页优先于脏内存页的顺序,电子设备可以判断非空闲内存空间中的干净内存页的数量是否小于第一目标页数。若否,此时只需要回收干净页就能够缓解内存紧张,则电子设备可以从干净内存页中获取数量等于第一目标页数的内存页,作为目标内存页。
在一些实施例中,根据第一目标页数从干净内存页中确定目标内存页时,电子设备可以获取干净内存页中各内存页的优先级;按照优先级从高到低的顺序,从干净内存页中获取数量等于第一目标页数的内存页,作为目标内存页。需要说明的是,对于内存页优先级的获取机制,本申请实施例不作具体限定,如将内存页对应的应用程序优先级作为内存页的优先级等。
在一些实施例中,获取干净内存页中各内存页的优先级时,电子设备可以确定干净内存页中各内存页的最后访问时间;根据最后访问时间确定各内存页的优先级,其中,最后访问时间是指电子设备对该内存页的数据最晚调用的时间,最后访问时间与优先级成负相关。
206、基于第一回收进程对目标内存页进行回收处理。
本申请实施例中,在根据第一目标页数从干净内存页中确定目标内存页之后,电子设备可以基于第一回收进程对目标内存页进行回收处理,如基于kswapd进程对目标内存页进行回收处理。
在一些实施例中,基于第一回收进程对目标内存页进行回收处理时,电子设备可以根据目标内存页中各内存页的获取顺序,通过第一回收进程对目标内存页中各内存页进行回收处理。
207、判断非空闲内存空间中的脏内存页的总占用内存量是否大于第二预设阈值。
本申请实施例中,在确定目标内存页之后,电子设备还可以获取非空闲内存空间中脏内存页的总占用内存量,判断总占用内存量是否大于第二预设阈值,若是,则判定需要对脏内存页进行回收,若否,则判定不需要对脏内存页进行回收。即电子设备在确定要回收部分或全部干净内存页之后,需要单独判断脏内存页是否需要进行回收。
其中,脏内存页的总占用内存量为脏内存页的内存页数量与内存页的大小的乘积。例如,电子设备的非空闲内存空间中具有32个处于读取状态的内存页,即脏内存页的内存页数量为32,内存页的大小为4KB,则脏内存页的总占用内存量为32×4KB=128KB。
其中,第二预设阈值预先设置在电子设备中,是脏内存页总占用内存量的最大上限值。
208、若是,则对脏内存页进行回收处理,直至脏内存页的总占用内存量小于或等于第二预设阈值。
本申请实施例中,在判断脏内存页的总占用内存量是否大于第二预设阈值之后,若脏内存页的总占用内存量大于第二预设阈值,此时电子设备需要对脏内存页进行回收处理,直至脏内存页的总占用内存量小于或等于第二预设阈值。
在一些实施例中,对脏内存页进行回收处理,直至脏内存页的总占用内存量小于或等于第二预设阈值时,电子设备可以获取脏内存页中各内存页的分配时间;按照分配时间从先到后的顺序,对脏内存页进行回收处理,直至脏内存页的总占用内存量小于或等于第二预设阈值。
在一些实施例中,对脏内存页进行回收处理,直至脏内存页的总占用内存量小于或等于第二预设阈值时,电子设备可以确定脏内存页中各内存页对应的应用程序;按照后台应用程序优先于前台应用程序的顺序,对脏内存页进行回收处理,直至脏内存页的总占用内存量小于或等于第二预设阈值。
图4是本申请实施例提供的内存回收装置的结构示意图,该装置用于执行上述实施例提供的内存回收方法,具备执行方法相应的功能模块和有益效果。如图4所示,该内存回收装置300包括:检测模块301、第一确定模块302、第二确定模块303、第一处理模块304,其中:
检测模块301,用于检测空闲内存空间的大小是否小于第一预设阈值;
第一确定模块302,用于若所述空闲内存空间的大小小于所述第一预设阈值,则根据所述空闲内存空间的大小确定待回收的第一目标页数;
第二确定模块303,用于按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页;
第一处理模块304,用于对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。
在一些实施例中,按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页时,第二确定模块303还可以用于:
若非空闲内存空间中的干净内存页的数量小于所述第一目标页数,则将所述干净内存页作为第一目标内存页,并从所述非空闲内存空间的脏内存页中确定出第二目标内存页;
对所述目标内存页进行回收处理时,第一处理模块304还可以用于:
基于第一回收进程对所述第一目标内存页进行回收处理,基于第二回收进程对所述第二目标内存页进行存储处理以及回收处理。
在一些实施例中,从所述非空闲内存空间的脏内存页中确定出第二目标内存页时,第二确定模块303还可以用于:
确定所述非空闲内存空间的脏内存页对应的应用程序及分配时间;
按照后台应用程序优先于前台应用程序的顺序,对所述脏内存页进行第一排序;
基于所述第一排序的结果,按照分配时间从先到后的顺序分别对前台应用程序和后台应用程序对应的所述脏内存页进行第二排序;
根据所述第二排序的结果,从前往后获取数量等于第二目标页数的内存页,作为第二目标内存页,其中,所述第二目标页数与所述干净内存页的数量之和等于所述第一目标页数。
在一些实施例中,按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页时,第二确定模块303还可以用于:
若非空闲内存空间中的干净内存页的数量大于或等于所述第一目标页数,则根据所述第一目标页数从所述干净内存页中确定目标内存页;
对所述目标内存页进行回收处理时,第一处理模块304还可以用于:
基于第一回收进程对所述目标内存页进行回收处理。
在一些实施例中,根据所述第一目标页数从所述干净内存页中确定目标内存页之后,内存回收装置300还包括:
第一判断模块,用于判断非空闲内存空间中的脏内存页的总占用内存量是否大于第二预设阈值;
第二处理模块,用于若总占用内存量大于第二预设阈值,则对所述脏内存页进行回收处理,直至所述脏内存页的总占用内存量小于或等于所述第二预设阈值。
在一些实施例中,根据所述第一目标页数从所述干净内存页中确定目标内存页时,第二确定模块303还可以用于:
获取所述干净内存页中各内存页的优先级;
按照优先级从高到低的顺序,从所述干净内存页中获取数量等于所述第一目标页数的内存页,作为目标内存页。
在一些实施例中,获取所述干净内存页中各内存页的优先级时,第二确定模块303还可以用于:
确定所述干净内存页中各内存页的最后访问时间;
根据最后访问时间确定各内存页的优先级,其中,所述最后访问时间与所述优先级成负相关。
在一些实施例中,检测空闲内存空间的大小是否小于第一预设阈值之前,内存回收装置300还包括:
第二判断模块,用于判断是否检测到内存分配请求;
当检测到内存分配请求时,检测模块301用于检测空闲内存空间的大小是否小于第一预设阈值;
检测空闲内存空间的大小是否小于第一预设阈值之后,内存回收装置300还包括:
第一响应模块,用于当空闲内存空间的大小不小于第一预设阈值时,基于所述空闲内存空间响应所述内存分配请求;
对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间之后,内存回收装置300还包括:
第二响应模块,用于基于所述空闲内存空间响应所述内存分配请求。
应当说明的是,本申请实施例提供的内存回收装置与上文实施例中的内存回收方法属于同一构思,在内存回收装置上可以运行内存回收方法实施例中提供的任一方法,其具体实现过程详见内存回收方法实施例,此处不再赘述。
由上可知,本申请实施例提供的内存回收装置,检测模块301检测空闲内存空间的大小是否小于第一预设阈值,若空闲内存空间的大小小于第一预设阈值,则第一确定模块302根据空闲内存空间的大小确定待回收的第一目标页数,第二确定模块303按照干净内存页优先于脏内存页的顺序,基于第一目标页数从非空闲内存空间中确定出目标内存页,第一处理模块304对目标内存页进行回收处理,以得到大小不小于第一预设阈值的空闲内存空间。在检测到空闲内存容量小于第一预设阈值时,优先选择容易回收的干净内存页作为目标内存页,可以提高内存回收的效率。
本申请实施例还提供一种电子设备,请参阅图5,图5为本申请实施例提供的电子设备的第一结构示意图。电子设备400包括处理器401以及存储器402。其中,存储器402与处理器401电性连接。
该处理器401是电子设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或加载存储在存储器402内的计算机程序,以及调用存储在存储器402内的数据,执行电子设备400的各种功能并处理数据,从而对电子设备400进行整体监控。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的计算机程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。其中,存储器402包括内存储器和外存储器,内存储器为电子设备的运行提供内存空间,外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据,例如硬盘、软盘、U盘等。
此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
在本申请实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401运行存储在存储器402中的计算机程序,从而实现各种功能,如下:
检测空闲内存空间的大小是否小于第一预设阈值;
若是,则根据所述空闲内存空间的大小确定待回收的第一目标页数;
按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页;
对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。
在一些实施例中,请参阅图6,图6为本申请实施例提供的电子设备的第二结构示意图。电子设备400还包括:射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409。其中,处理器401分别与射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409电性连接。
射频电路403用于收发射频信号,以通过无线通信与网络设备或其他电子设备进行通信。
显示屏404可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图像、文本、图标、视频和其任意组合来构成。
控制电路405与显示屏404电性连接,用于控制显示屏404显示信息。
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。其中,输入单元406可以包括指纹识别模组。
音频电路407可通过扬声器、传声器提供用户与电子设备之间的音频接口。其中,音频电路407包括麦克风。所述麦克风与所述处理器401电性连接。所述麦克风用于接收用户输入的语音信息。
传感器408用于采集外部环境信息。传感器408可以包括环境亮度传感器、加速度传感器、陀螺仪等传感器中的一种或多种。
电源409用于给电子设备400的各个部件供电。在一些实施例中,电源409可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管图6中未示出,电子设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401运行存储在存储器402中的计算机程序,从而实现各种功能,如下:
检测空闲内存空间的大小是否小于第一预设阈值;
若是,则根据所述空闲内存空间的大小确定待回收的第一目标页数;
按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页;
对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。
在一些实施例中,按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页时,处理器401可以执行:
若非空闲内存空间中的干净内存页的数量小于所述第一目标页数,则将所述干净内存页作为第一目标内存页,并从所述非空闲内存空间的脏内存页中确定出第二目标内存页;
对所述目标内存页进行回收处理时,处理器401可以执行:
基于第一回收进程对所述第一目标内存页进行回收处理,基于第二回收进程对所述第二目标内存页进行存储处理以及回收处理。
在一些实施例中,从所述非空闲内存空间的脏内存页中确定出第二目标内存页时,处理器401可以执行:
确定所述非空闲内存空间的脏内存页对应的应用程序及分配时间;
按照后台应用程序优先于前台应用程序的顺序,对所述脏内存页进行第一排序;
基于所述第一排序的结果,按照分配时间从先到后的顺序分别对前台应用程序和后台应用程序对应的所述脏内存页进行第二排序;
根据所述第二排序的结果,从前往后获取数量等于第二目标页数的内存页,作为第二目标内存页,其中,所述第二目标页数与所述干净内存页的数量之和等于所述第一目标页数。
在一些实施例中,按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页时,处理器401可以执行:
若非空闲内存空间中的干净内存页的数量大于或等于所述第一目标页数,则根据所述第一目标页数从所述干净内存页中确定目标内存页;
对所述目标内存页进行回收处理时,处理器401可以执行:
基于第一回收进程对所述目标内存页进行回收处理。
在一些实施例中,根据所述第一目标页数从所述干净内存页中确定目标内存页之后,处理器401还可以执行:
判断非空闲内存空间中的脏内存页的总占用内存量是否大于第二预设阈值;
若是,则对所述脏内存页进行回收处理,直至所述脏内存页的总占用内存量小于或等于所述第二预设阈值。
在一些实施例中,根据所述第一目标页数从所述干净内存页中确定目标内存页时,处理器401可以执行:
获取所述干净内存页中各内存页的优先级;
按照优先级从高到低的顺序,从所述干净内存页中获取数量等于所述第一目标页数的内存页,作为目标内存页。
在一些实施例中,获取所述干净内存页中各内存页的优先级时,处理器401可以执行:
确定所述干净内存页中各内存页的最后访问时间;
根据最后访问时间确定各内存页的优先级,其中,所述最后访问时间与所述优先级成负相关。
在一些实施例中,检测空闲内存空间的大小是否小于第一预设阈值之前,处理器401还可以执行:
判断是否检测到内存分配请求;
若是,执行所述检测空闲内存空间的大小是否小于第一预设阈值;
检测空闲内存空间的大小是否小于第一预设阈值之后,处理器401还可以执行:
若否,则基于所述空闲内存空间响应所述内存分配请求;
对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间之后,处理器401还可以执行:
基于所述空闲内存空间响应所述内存分配请求。
由上可知,本申请实施例提供的电子设备,在检测到空闲内存空间的大小小于第一预设阈值时,根据空闲内存空间的大小确定待回收的第一目标页数,然后按照干净内存页优先于脏内存页的顺序,基于第一目标页数从非空闲内存空间中确定出目标内存页,最后对目标内存页进行回收处理,以得到大小不小于第一预设阈值的空闲内存空间。即优先选择容易回收的干净内存页作为目标内存页进行回收处理,可以提高内存回收的效率。
本申请实施例还提供一种存储介质,该存储介质存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上述任一实施例中的内存回收方法,比如:检测空闲内存空间的大小是否小于第一预设阈值;若是,则根据所述空闲内存空间的大小确定待回收的第一目标页数;按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页;对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。
在本申请实施例中,存储介质可以是磁碟、光盘、只读存储器(Read Only Memory,ROM)、或者随机存取记忆体(Random Access Memory,RAM)等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对本申请实施例的内存回收方法而言,本领域普通测试人员可以理解实现本申请实施例的内存回收方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,如存储在电子设备的存储器中,并被该电子设备内的至少一个处理器执行,在执行过程中可包括如内存回收方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储器、随机存取记忆体等。
对本申请实施例的内存回收装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,该存储介质譬如为只读存储器,磁盘或光盘等。
以上对本申请实施例所提供的一种内存回收方法、装置、存储介质以及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种内存回收方法,其特征在于,包括:
检测空闲内存空间的大小是否小于第一预设阈值;
若是,则根据所述空闲内存空间的大小确定待回收的第一目标页数;
按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页,具体包括:若非空闲内存空间中的干净内存页的数量小于所述第一目标页数,则将所述干净内存页作为第一目标内存页,并确定所述非空闲内存空间的脏内存页对应的应用程序及分配时间;按照后台应用程序优先于前台应用程序的顺序,对所述脏内存页进行第一排序;基于所述第一排序的结果,按照分配时间从先到后的顺序分别对前台应用程序和后台应用程序对应的所述脏内存页进行第二排序;根据所述第二排序的结果,从前往后获取数量等于第二目标页数的脏内存页,作为第二目标内存页,其中,所述第二目标页数与所述干净内存页的数量之和等于所述第一目标页数;
对所述第一目标内存页以及所述第二目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。
2.根据权利要求1所述的内存回收方法,其特征在于,所述对所述第一目标内存页以及所述第二目标内存页进行回收处理,包括:
基于第一回收进程对所述第一目标内存页进行回收处理,基于第二回收进程对所述第二目标内存页进行存储处理以及回收处理。
3.根据权利要求1所述的内存回收方法,其特征在于,所述按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页,包括:
若非空闲内存空间中的干净内存页的数量大于或等于所述第一目标页数,则根据所述第一目标页数从所述干净内存页中确定目标内存页;
所述对所述目标内存页进行回收处理,包括:
基于第一回收进程对所述目标内存页进行回收处理。
4.根据权利要求3所述的内存回收方法,其特征在于,所述根据所述第一目标页数从所述干净内存页中确定目标内存页之后,还包括:
判断非空闲内存空间中的脏内存页的总占用内存量是否大于第二预设阈值;
若是,则对所述脏内存页进行回收处理,直至所述脏内存页的总占用内存量小于或等于所述第二预设阈值。
5.根据权利要求3所述的内存回收方法,其特征在于,所述根据所述第一目标页数从所述干净内存页中确定目标内存页,包括:
获取所述干净内存页中各内存页的优先级;
按照优先级从高到低的顺序,从所述干净内存页中获取数量等于所述第一目标页数的内存页,作为目标内存页。
6.根据权利要求5所述的内存回收方法,其特征在于,所述获取所述干净内存页中各内存页的优先级,包括:
确定所述干净内存页中各内存页的最后访问时间;
根据最后访问时间确定各内存页的优先级,其中,所述最后访问时间与所述优先级成负相关。
7.根据权利要求1所述的内存回收方法,其特征在于,所述检测空闲内存空间的大小是否小于第一预设阈值之前,还包括:
判断是否检测到内存分配请求;
若是,执行所述检测空闲内存空间的大小是否小于第一预设阈值;
所述检测空闲内存空间的大小是否小于第一预设阈值之后,还包括:
若否,则基于所述空闲内存空间响应所述内存分配请求;
所述对所述目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间之后,还包括:
基于所述空闲内存空间响应所述内存分配请求。
8.一种内存回收装置,其特征在于,包括:
检测模块,用于检测空闲内存空间的大小是否小于第一预设阈值;
第一确定模块,用于若所述空闲内存空间的大小小于所述第一预设阈值,则根据所述空闲内存空间的大小确定待回收的第一目标页数;
第二确定模块,用于按照干净内存页优先于脏内存页的顺序,基于所述第一目标页数从非空闲内存空间中确定出目标内存页,具体包括:若非空闲内存空间中的干净内存页的数量小于所述第一目标页数,则将所述干净内存页作为第一目标内存页,并确定所述非空闲内存空间的脏内存页对应的应用程序及分配时间;按照后台应用程序优先于前台应用程序的顺序,对所述脏内存页进行第一排序;基于所述第一排序的结果,按照分配时间从先到后的顺序分别对前台应用程序和后台应用程序对应的所述脏内存页进行第二排序;根据所述第二排序的结果,从前往后获取数量等于第二目标页数的脏内存页,作为第二目标内存页,其中,所述第二目标页数与所述干净内存页的数量之和等于所述第一目标页数;
第一处理模块,用于对所述第一目标内存页以及所述第二目标内存页进行回收处理,以得到大小不小于所述第一预设阈值的空闲内存空间。
9.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至7任一项所述的内存回收方法。
10.一种电子设备,包括处理器、存储器,所述存储器有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1至7任一项所述的内存回收方法。
CN201911259875.2A 2019-12-10 2019-12-10 内存回收方法、装置、存储介质及电子设备 Active CN111078586B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911259875.2A CN111078586B (zh) 2019-12-10 2019-12-10 内存回收方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911259875.2A CN111078586B (zh) 2019-12-10 2019-12-10 内存回收方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN111078586A CN111078586A (zh) 2020-04-28
CN111078586B true CN111078586B (zh) 2022-03-01

Family

ID=70313547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911259875.2A Active CN111078586B (zh) 2019-12-10 2019-12-10 内存回收方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN111078586B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035253B (zh) * 2020-08-27 2023-01-20 浪潮商用机器有限公司 一种linux系统页缓存回收方法及相关装置
CN113778662B (zh) * 2021-07-28 2022-12-06 荣耀终端有限公司 内存回收方法及装置
CN113986540B (zh) * 2021-10-25 2024-05-10 苏州浪潮智能科技有限公司 定时回收linux高速缓存的方法和装置
CN116107925B (zh) * 2023-04-10 2023-09-26 阿里云计算有限公司 数据存储单元处理方法
CN116700935B (zh) * 2023-08-04 2023-11-03 苏州浪潮智能科技有限公司 一种内存数据迁移方法、装置、电子设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105159777A (zh) * 2015-08-03 2015-12-16 中科创达软件股份有限公司 进程的内存回收方法及装置
WO2016122491A1 (en) * 2015-01-28 2016-08-04 Hewlett-Packard Development Company, L.P. Page cache in a non-volatile memory
CN106201717A (zh) * 2016-07-01 2016-12-07 珠海市魅族科技有限公司 一种管理系统内存的方法及终端
CN106843756A (zh) * 2017-01-13 2017-06-13 中国科学院信息工程研究所 基于页面分类的内存页面回收方法及系统
CN107766151A (zh) * 2017-09-28 2018-03-06 郑州云海信息技术有限公司 一种页面换出方法
CN107885666A (zh) * 2016-09-28 2018-04-06 华为技术有限公司 一种内存管理方法和装置
CN108563506A (zh) * 2018-04-11 2018-09-21 青岛海信移动通信技术股份有限公司 移动终端的内存回收方法及装置
CN109697119A (zh) * 2017-10-20 2019-04-30 中兴通讯股份有限公司 终端内存回收处理方法及装置
CN110008016A (zh) * 2019-04-15 2019-07-12 深圳市万普拉斯科技有限公司 匿名页面管理方法、装置、终端设备及可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799561B2 (en) * 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
CN103077122B (zh) * 2013-01-14 2016-03-30 华为终端有限公司 移动终端内置存储空间的管理方法及移动终端
US10216598B2 (en) * 2017-07-11 2019-02-26 Stratus Technologies Bermuda Ltd. Method for dirty-page tracking and full memory mirroring redundancy in a fault-tolerant server
CN108228343B (zh) * 2017-08-21 2020-11-17 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN110018901B (zh) * 2018-01-10 2021-08-03 Oppo广东移动通信有限公司 内存回收方法、装置、计算机设备和计算机可读存储介质
CN109857556B (zh) * 2019-01-15 2021-01-08 Oppo广东移动通信有限公司 内存回收方法及装置、存储介质和电子设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016122491A1 (en) * 2015-01-28 2016-08-04 Hewlett-Packard Development Company, L.P. Page cache in a non-volatile memory
CN105159777A (zh) * 2015-08-03 2015-12-16 中科创达软件股份有限公司 进程的内存回收方法及装置
CN106201717A (zh) * 2016-07-01 2016-12-07 珠海市魅族科技有限公司 一种管理系统内存的方法及终端
CN107885666A (zh) * 2016-09-28 2018-04-06 华为技术有限公司 一种内存管理方法和装置
CN106843756A (zh) * 2017-01-13 2017-06-13 中国科学院信息工程研究所 基于页面分类的内存页面回收方法及系统
CN107766151A (zh) * 2017-09-28 2018-03-06 郑州云海信息技术有限公司 一种页面换出方法
CN109697119A (zh) * 2017-10-20 2019-04-30 中兴通讯股份有限公司 终端内存回收处理方法及装置
CN108563506A (zh) * 2018-04-11 2018-09-21 青岛海信移动通信技术股份有限公司 移动终端的内存回收方法及装置
CN110008016A (zh) * 2019-04-15 2019-07-12 深圳市万普拉斯科技有限公司 匿名页面管理方法、装置、终端设备及可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Energy-aware demand paging on NAND flash-based embedded storages;Chanik Park 等;《ISLPED "04: Proceedings of the 2004 international symposium on Low power electronics and design》;20040809;第338-343页 *
一种Linux内存管理机制;谢文娣 等;《新乡学院学报》;20161231;第33卷(第12期);第31-35页 *

Also Published As

Publication number Publication date
CN111078586A (zh) 2020-04-28

Similar Documents

Publication Publication Date Title
CN111078586B (zh) 内存回收方法、装置、存储介质及电子设备
CN111078406B (zh) 内存管理方法、装置、存储介质及电子设备
CN110888746B (zh) 内存管理方法、装置、存储介质及电子设备
CN111158910B (zh) 内存管理方法、装置、存储介质及电子设备
CN111274039B (zh) 内存回收方法、装置、存储介质及电子设备
CN109992402B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN106681933A (zh) 一种内存管理方法及终端
CN110764906A (zh) 内存回收处理方法、装置、电子设备以及存储介质
WO2019137252A1 (zh) 内存处理方法、电子设备、计算机可读存储介质
CN114185494B (zh) 内存匿名页的处理方法、电子设备及可读存储介质
WO2019137258A1 (zh) 内存处理方法、电子设备及计算机可读存储介质
WO2019024641A1 (zh) 数据同步方法、装置、存储介质以及电子设备
CN110895492A (zh) 设备控制方法、装置、存储介质及电子设备
WO2019128542A1 (zh) 应用处理方法、电子设备、计算机可读存储介质
CN107608778B (zh) 应用程序管控方法、装置、存储介质及电子设备
CN111475299B (zh) 内存分配方法、装置、存储介质及电子设备
CN108563506A (zh) 移动终端的内存回收方法及装置
US20240152439A1 (en) Detection Method and Electronic Device
CN111078587B (zh) 内存分配方法、装置、存储介质及电子设备
CN111381953B (zh) 进程管理方法、装置、存储介质及电子设备
CN110955614A (zh) 文件缓存的回收方法、装置、存储介质及终端
CN110264184B (zh) 支付控制方法及相关产品
CN111008079B (zh) 进程管理方法、装置、存储介质及电子设备
CN110647294B (zh) 存储块回收方法、装置、存储介质及电子设备
CN111078405B (zh) 内存分配方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant