CN111274039A - 内存回收方法、装置、存储介质及电子设备 - Google Patents
内存回收方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111274039A CN111274039A CN202010093543.8A CN202010093543A CN111274039A CN 111274039 A CN111274039 A CN 111274039A CN 202010093543 A CN202010093543 A CN 202010093543A CN 111274039 A CN111274039 A CN 111274039A
- Authority
- CN
- China
- Prior art keywords
- memory page
- linked list
- memory
- page
- target
- 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.)
- Granted
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 84
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000004590 computer program Methods 0.000 claims description 20
- 238000004064 recycling Methods 0.000 claims description 13
- 238000007726 management method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
Classifications
-
- 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/5016—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 the resource being the memory
-
- 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
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种内存回收方法、装置、存储介质及电子设备,其中,当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表;从内存页链表的链表尾部确定访问时间最远的目标内存页;获取目标内存页的历史访问次数,并判断历史访问次数是否大于第一预设阈值;若是,则从内存页链表中确定出访问时间早于目标内存页、且与目标内存页相邻的内存页,作为新的目标内存页,并基于新的目标内存页返回执行获取目标内存页的历史访问次数;若否,则回收目标内存页,通过这种方式,对于访问次数多的内存页来说,其不容易被回收,进而提高这些内存页中存储数据的缓存命中率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种内存回收方法、装置、存储介质及电子设备。
背景技术
内存管理是系统的核心技术之一,对提高系统的用户体验和系统运行的稳定性具有关键作用。当内存紧张时,系统会出现卡顿、运行出错、崩溃等一系列问题。相关技术中,可通过内存回收缓解内存紧张,但是常规的内存管理方式存在导致文件缓存命中率低的技术问题。
发明内容
本申请实施例提供一种内存回收方法、装置、存储介质及电子设备,能够提高文件缓存命中率。
第一方面,本申请实施例提供一种内存回收方法,包括:
当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,其中,所述内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;
从所述内存页链表的链表尾部确定访问时间最远的目标内存页;
获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值;
若是,则从所述内存页链表中确定出访问时间早于所述目标内存页、且与所述目标内存页相邻的内存页,作为新的目标内存页,并基于所述新的目标内存页返回执行获取所述目标内存页的历史访问次数;
若否,则回收所述目标内存页。
第二方面,本申请实施例还提供一种内存回收装置,包括:
链表获取单元,用于当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,其中,所述内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;
内存页确定单元,用于从所述内存页链表的链表尾部确定访问时间最远的目标内存页;
访问统计单元,用于获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值;
所述内存页确定单元还用于:若所述历史访问次数大于所述第一预设阈值,则从所述内存页链表中确定出访问时间早于所述目标内存页、且与所述目标内存页相邻的内存页,作为新的目标内存页,并基于所述新的目标内存页返回执行获取所述目标内存页的历史访问次数;
内存回收单元,用于若所述历史访问次数不大于所述第一预设阈值,则回收所述目标内存页。
第三方面,本申请实施例还提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的内存回收方法。
第四方面,本申请实施例还提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的内存回收方法。
本申请实施例提供的技术方案,在需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,该内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;从该内存页链表的链表尾部确定访问时间最远的目标内存页;获取该目标内存页的历史访问次数,并判断该历史访问次数是否大于第一预设阈值;若是,则从该内存页链表中确定出访问时间早于该目标内存页、且与该目标内存页相邻的内存页,作为新的目标内存页,并基于该新的目标内存页返回执行获取该目标内存页的历史访问次数;若否,则回收该目标内存页。本申请通过这种在内存页回收之前先进行访问次数判断的方式,对于访问次数多的内存页来说,其不容易被回收,进而提高这些内存页中存储数据的缓存命中率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的内存回收方法的第一种流程示意图。
图2为本申请实施例提供的内存回收方法的内存页链表的示意图。
图3为本申请实施例提供的内存回收方法的第二种流程示意图。
图4为本申请实施例提供的内存回收装置的结构示意图。
图5为本申请实施例提供的电子设备的第一种结构示意图。
图6为本申请实施例提供的电子设备的第二种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例提供一种内存回收方法,该内存回收方法的执行主体可以是本申请实施例提供的内存回收装置,或者集成了该内存回收装置的电子设备,其中该内存回收装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑或者台式电脑等设备。
请参阅图1,图1为本申请实施例提供的内存回收方法的第一种流程示意图。本申请实施例提供的内存回收方法的具体流程可以如下:
101、当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,其中,内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部。
电子设备的系统和应用程序的进程的运行,都需要系统内核为其分配内存空间。并且随着系统的运行情况,内核不断地进行着内存的回收与分配等。其中,需要说明的是,操作系统以内存页为单位管理内存。
同时,电子设备在运行过程中,内存中缓存的一些数据可能会被周期性或者会被多次访问,例如,某些场景中,缓存在内存中的一些文件会被进程或者线程周期性调用,这种情况下,如果仍然采用常规的内存回收方式,即这些数据与其他不被经常访问的数据所占用的内存页被回收的概率一样,会导致这些数据的缓存命中率较低,造成电子设备的数据处理速度变慢。为了避免这种情况,本申请实施例提出一种内存回收方式,以对可能会被周期性访问或者会被多次访问的缓存对应的内存页,采用区别于不被经常访问的数据的内存回收方式,进行内存回收。
当内存空间不足时,系统内核会进行内存回收,例如,通过释放处于已分配状态中的内存页、进行内存压缩,关闭处于运行状态的进程等等。
比如,当接收到进程或者线程发送的内存分配请求时,内核会对空闲内存量进行检测,若检测到剩余内存量不足,判定需要进行内存页回收,则内核会采用上述方式进行内存回收。又比如,内核中预设的内存管理线程会周期性地对空闲内存量进行检测,在检测到空闲内存量不足时,判定需要进行内存页回收,内核会进行内存页的回收,以释放内存空间。
例如,在一些实施例中,当接收到内存分配请求时,检测空闲内存量是否小于第二预设阈值;当空闲内存量小于第二预设阈值时,判定需要进行内存页回收。
系统内核在进行内存管理时会设置有内存水线,即第二预设阈值,内核接收到内存分配请求时,会检测系统剩余的空闲内存量是否小于该内存水线,如果小于该内存水线,则判定需要进行内存回收。
此外,本申请实施例中,电子设备中维护有一个内存页链表,该内存页链表由处于已分配状态的内存页的页帧号构成,并且内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部。请参阅图2,图2为本申请实施例提供的内存回收方法的内存页链表的示意图。其中,每一个矩形框表示一个内存页,其中的数字位该内存页的页帧号。物理内存中的每一个内存页具有唯一的页帧号。当内核判定需要进行内存回收时,获取维护的该内存页链表,并根据该内存页链表从处于已分配状态的内存页中选择内存页进行释放。
102、从内存页链表的链表尾部确定访问时间最远的目标内存页。
本申请实施例中,在进行内存回收时,一般从内存页链表中选择最近最少使用的内存页作为目标内存页,将目标内存页中的数据释放,以回收内存。由于内存页链表中的页帧号是按照访问时间由近至远的顺序由链表头部排列至链表尾部,也就是说,位于链表尾部的内存页中的数据一般较长时间内未被访问过,而位于链表头部的内存页最近被访问过。当内存页链表中的页帧号对应的内存页被访问后,会将其页帧号从当前位置移动至链表头部。
一般根据需要分配的内存量或者需要回收的内存量从链表的尾部选择一定数量的内存页进行回收,例如,先从内存页链表的链表尾部确定访问时间最远的目标内存页。
103、获取目标内存页的历史访问次数,并判断历史访问次数是否大于第一预设阈值。
本申请实施例中,对每一个处于已分配状态来说,对其历史访问次数进行记录,对于一些会被周期性访问或者经常访问的内存页来说,其历史访问次数会较高。其中,第一预设阈值为一个根据需要预先设置的值,并且针对不同的进程来说,该第一预设阈值可以不同。
其中,当一个内存页被分配给一个进程或者线程使用时,该内存页的状态处于已分配状态,表示该内存页已被占用。当一个内存页未被分配给任何进程或者线程使用时,该内存页的状态处于未分配状态,表示该内存页未被占用。
确定目标内存页之后,获取该目标内存页的历史访问次数,并判断该历史访问次数是否大于第一预设阈值。
104、若是,则从内存页链表中确定出访问时间早于目标内存页、且与目标内存页相邻的内存页,作为新的目标内存页,并基于新的目标内存页返回执行获取目标内存页的历史访问次数。
如果该目标内存页的历史访问次数大于第一预设阈值,说明该目标内存页大概率还会被再次访问,则跳过该目标内存页,从内存页链表中确定出访问时间早于目标内存页、且与目标内存页相邻的内存页,作为新的目标内存页,即按照从内存页链表的链表尾部到链表头部的顺序,选择下一个内存页,作为新的目标内存页。并获取该新的目标内存页的历史访问次数,再次判断其是否大于第一预设阈值。
105、若否,则回收目标内存页。
反之,如果确定出的目标内存页的访问数量小于第一预设阈值,说明该目标内存页还会被再次访问的概率较小,则回收该目标内存页。
具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
由上可知,本申请实施例提供的内存回收方法,在需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,该内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;从该内存页链表的链表尾部确定访问时间最远的目标内存页;获取该目标内存页的历史访问次数,并判断该历史访问次数是否大于第一预设阈值;若是,则从该内存页链表中确定出访问时间早于该目标内存页、且与该目标内存页相邻的内存页,作为新的目标内存页,并基于该新的目标内存页返回执行获取该目标内存页的历史访问次数;若否,则回收该目标内存页。本申请通过这种在内存页回收之前先进行访问次数判断的方式,对于访问次数多的内存页来说,其不容易被回收,进而提高这些内存页中存储数据的缓存命中率。
在一些实施例中,回收目标内存页之后,还包括:
判断回收操作后,处于空闲状态的内存页数量是否满足内存分配需求;若否,则返回执行从内存页链表中确定出访问时间早于目标内存页、且与目标内存页相邻的内存页,作为新的目标内存页,并基于新的目标内存页执行获取目标内存页的历史访问次数。
一般一个内存页的大小为一个预设的固定值,例如,一个内存页的大小为4KB。在内存分配或者内存回收时,根据内存分配需求或者内存回收需求的量的大小,确定要回收的内存页的数量。例如,内存分配需求的大小为16KB,一个内存页的大小为4KB,则需要回收4个内存页,在105中,回收内存页之后,如果处于空闲状态的内存页数量不满足内存分配需求,即没有达到4个内存页。则继续进行内存回收,返回执行104,选择当前的目标内存页的下一个内存页,作为新的目标内存页,并进行历史访问次数的判断如此循环往复,直至回收到符合要求的内存页数量。
在一些实施例中,获取目标内存页的历史访问次数,可以包括:获取目标内存页在预设历史时长内的历史访问次数。
或者,在另外一些实施例中,获取目标内存页的历史访问次数,并判断历史访问次数是否大于第一预设阈值之后,还包括:若是,则为目标内存页面添加预设标记。获取目标内存页的历史访问次数,并判断历史访问次数是否大于第一预设阈值之前,还包括:判断目标内存页是否具有预设标记;若目标内存页不具有预设标记,则执行获取目标内存页的历史访问次数,并判断历史访问次数是否大于第一预设阈值;若目标内存页具有预设标记,则回收目标内存页。
该实施例中,为历史访问次数大于第一预设阈值的目标内存页面添加预设标记。如果该目标内存页被跳过依次之后,再次被确定为目标内存页,则直接回收该目标内存页,无需再获取其历史访问次数。
通过以上两种实施例中的任意一种实施例,可以避免一些虽然曾经被多次访问,但是在最近的一段时间内并没有被访问的内存页长期占用内存,以实现缓存命中率的同时,保证内存空间的有效利用。
在一些实施例中,内存页链表包括第一内存页链表和第二内存页链表,第一内存页链表中的内存页的访问时间晚于第二内存页链表中的内存页的访问时间;从内存页链表的链表尾部确定访问时间最远的目标内存页,包括:从第二内存页链表的链表尾部确定访问时间最远的目标内存页。
该实施例中,将内存页链表分为活跃内存页链表和非活跃内存页链表,其中,活跃内存页链表记为第一内存页链表,非活跃内存页链表记为第二内存页链表。当内存页被访问时,将内存页的页帧号放置在第一内存页链表的链表头部,表示该内存页处于活跃状态,随着活跃状态的页面的数量越来越多,就会有部分较久没有访问到的内存页被推到第一内存页链表的链表尾部,当第一内存页链表中的内存页超出一定数量时,会将超出部分的内存页移到第二内存页链表中,第二内存页链表中的内存页也是一样的规则,越久没用的内存页就会被推到该链表尾部,最后被回收的是第二内存页链表尾部的内存页。当然,如果第二内存页链表中的内存页被再次访问,其页帧号会被移至第一内存页链表的链表头部。当需要进行内存页回收时,优先获取第二内存页链表进行内存页回收,当第二内存页链表为空时,则获取第一内存页链表进行内存页回收。
在一些实施例中,该方法还包括:当接收到内存页访问请求时,确定内存页访问请求对应的内存页的目标页帧号;当目标页帧号位于第二内存页链表中时,将目标页帧号从第二内存页链表移至第一内存页链表的链表头部,并在内存页访问请求对应的内存页具有预设标签时,将预设标签删除。
该实施例中,如果第二内存页链表中的内存页被再次访问、并且该内存页具有预设标签,在将内存页的页帧号移至第一内存页链表的链表头部的同时,将其预设标签删除。
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
请参阅图3,图3为本发明实施例提供的内存回收方法的第二流程示意图。
方法包括:
201、当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的第一内存页链表和第二内存页链表。
电子设备的系统和应用程序的进程的运行,都需要系统内核为其分配内存空间。并且随着系统的运行情况,内核不断地进行着内存的回收与分配等。其中,操作系统以内存页为单位管理内存。
此外,电子设备中维护有内存页链表,内存页链表由第一内存页链表和第二内存页链表构成。其中,第一内存页链表和第二内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;第一内存页链表中的内存页的访问时间晚于第二内存页链表中的内存页的访问时间。当内存页被访问时,将内存页的页帧号放置在第一内存页链表的链表头部,表示该内存页处于活跃状态,随着活跃状态的页面的数量越来越多,就会有部分较久没有访问到的内存页被推到第一内存页链表的链表尾部,当第一内存页链表中的内存页超出一定数量时,会将超出部分的内存页移到第二内存页链表中,第二内存页链表中的内存页也是一样的规则,越久没用的内存页就会被推到该链表尾部,最后被回收的是第二内存页链表尾部的内存页。
202、判断第一内存页链表中的内存页数量是否大于第二预设阈值。
203、若是,将超出第二预设阈值的内存页的页帧号,从第一内存页链表的链表尾部移至第二内存页链表的链表头部。
需要进行内存页回收时,先判断第一内存页链表中的内存页数量是否大于第二预设阈值,其中,内存页链表中的页帧号数量即为内存页数量。如果是,则将超出部分的内存页移到第二内存页链表的链表头部。
204、从第二内存页链表的链表尾部确定访问时间最远的目标内存页。
205、获取目标内存页的历史访问次数,并判断历史访问次数是否大于第一预设阈值。
按照上述链表管理方式,对于第一内存页链表和第二内存页链表,链表中的页帧号是按照访问时间由近至远的顺序由链表头部排列至链表尾部,也就是说,位于链表尾部的内存页中的数据一般较长时间内未被访问过,而位于链表头部的内存页最近被访问过。当需要进行内存页回收时,优先获取第二内存页链表进行内存页回收,当第二内存页链表为空时,则获取第一内存页链表进行内存页回收。因此,接下来,从第二内存页链表的链表尾部确定访问时间最远的内存页,作为目标内存页。获取该目标内存页的历史访问次数,并判断该历史访问次数是否大于第一预设阈值。
若是,则执行206。若否,则执行207。
206、从第二内存页链表中确定出访问时间早于目标内存页、且与目标内存页相邻的内存页,作为新的目标内存页,并基于新的目标内存页返回执行205。
如果该目标内存页的历史访问次数大于第一预设阈值,说明该目标内存页大概率还会被再次访问,则跳过该目标内存页,从内存页链表中确定出访问时间早于目标内存页、且与目标内存页相邻的内存页,作为新的目标内存页,即按照从内存页链表的链表尾部到链表头部的顺序,选择下一个内存页,作为新的目标内存页。并获取该新的目标内存页的历史访问次数,再次判断其是否大于第一预设阈值,如此循环往复,直至确定出的目标内存页的历史访问次数不大于第一预设阈值。
207、回收目标内存页。
反之,如果确定出的目标内存页的访问数量小于第一预设阈值,说明该目标内存页还会被再次访问的概率较小,则回收该目标内存页。
208、判断回收操作后,处于空闲状态的内存页数量是否满足内存分配需求。若否,则返回执行206。
在内存分配或者内存回收时,根据内存分配需求或者内存回收需求的量的大小,确定要回收的内存页的数量。例如,内存分配需求的大小为16KB,一个内存页的大小为4KB,则需要回收4个内存页,在207中,回收内存页之后,如果处于空闲状态的内存页数量不满足内存分配需求,即没有达到4个内存页。则继续进行内存回收,返回执行206,选择当前的目标内存页的下一个内存页,作为新的目标内存页,并进行历史访问次数的判断如此循环往复,直至回收到符合要求的内存页数量。反之,则完成内存回收。
由上可知,本发明实施例提出的内存回收方法,通过维护的内存页链表选择最近最少使用,并且历史访问次数少于第一预设阈值的内存页作为目标内存页进行回收,以实现对可能会被周期性访问或者会被多次访问的缓存对应的内存页采用区别于不被经常访问的数据的内存回收方式,进行内存回收,使得可能会被周期性访问或者会被多次访问不会被频繁得回收,以提高缓存命中率,即对于进程或者线程周期性访问的数据或者经常访问的数据,当进程或者线程再次访问时,可以直接从缓存中命中(不需要从磁盘中重新读取)的概率有所提升。
在一实施例中还提供一种内存回收装置。请参阅图4,图4为本申请实施例提供的内存回收装置300的结构示意图。其中该内存回收装置300应用于电子设备,该内存回收装置300包括链表获取单元301、内存页确定单元302、访问统计单元303以及内存回收单元304,如下:
链表获取单元301,用于当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,其中,所述内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;
内存页确定单元302,用于从所述内存页链表的链表尾部确定访问时间最远的目标内存页;
访问统计单元303,用于获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值;
内存页确定单元302还用于:若所述历史访问次数大于所述第一预设阈值,则从所述内存页链表中确定出访问时间早于所述目标内存页、且与所述目标内存页相邻的内存页,作为新的目标内存页,并基于所述新的目标内存页返回执行获取所述目标内存页的历史访问次数;
内存回收单元304,用于若所述历史访问次数不大于所述第一预设阈值,则回收所述目标内存页。
在一些实施例中,该内存回收装置300还包括内存检测单元,该内存检测单元还用于:判断回收操作后,处于空闲状态的内存页数量是否满足内存分配需求;
内存页确定单元302还用于:当内存检测单元检测到回收操作后,处于空闲状态的内存页数量不满足内存分配需求时,从所述内存页链表中确定出访问时间早于所述目标内存页、且与所述目标内存页相邻的内存页,作为新的目标内存页,并由访问统计单元执行获取所述目标内存页的历史访问次数。
在一些实施例中,访问统计单元303还用于:获取所述目标内存页在预设历史时长内的历史访问次数。
在一些实施例中,该内存回收装置300还包括标签管理单元,该标签管理单元用于若所述历史访问次数大于第一预设阈值,则为所述目标内存页面添加预设标记;
以及,判断所述目标内存页是否具有所述预设标记;
访问统计单元303还用于:若所述目标内存页不具有所述预设标记,则获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值;
内存回收单元304还用于:若所述目标内存页具有所述预设标记,则回收所述目标内存页。
在一些实施例中,所述内存页链表包括第一内存页链表和第二内存页链表,所述第一内存页链表中的内存页的访问时间晚于所述第二内存页链表中的内存页的访问时间;内存页确定单元302还用于:从所述第二内存页链表的链表尾部确定访问时间最远的目标内存页。
在一些实施例中,该内存回收装置300还包括第一链表管理单元,该第一链表管理单元用于当需要进行内存页回收时,判断所述第一内存页链表中的内存页数量是否大于第二预设阈值;
以及,若是,将超出所述第二预设阈值的内存页的页帧号,从所述第一内存页链表的链表尾部移至所述第二内存页链表的链表头部。
在一些实施例中,该内存回收装置300还包括第二链表管理单元,该第二链表管理单元用于当需要进行内存页回收时,判断所述第一内存页链表中的内存页数量是否大于第二预设阈值;
以及,若是,将超出所述第二预设阈值的内存页的页帧号,从所述第一内存页链表的链表尾部移至所述第二内存页链表的链表头部。
在一些实施例中,内存回收单元304还用于:当接收到内存分配请求时,检测空闲内存量是否小于第二预设阈值;当所述空闲内存量小于所述第二预设阈值时,判定需要进行内存页回收。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
应当说明的是,本申请实施例提供的内存回收装置与上文实施例中的内存回收方法属于同一构思,在内存回收装置上可以运行内存回收方法实施例中提供的任一方法,其具体实现过程详见内存回收方法实施例,此处不再赘述。
由上可知,本申请实施例提出的内存回收装置,在需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,该内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;从该内存页链表的链表尾部确定访问时间最远的目标内存页;获取该目标内存页的历史访问次数,并判断该历史访问次数是否大于第一预设阈值;若是,则从该内存页链表中确定出访问时间早于该目标内存页、且与该目标内存页相邻的内存页,作为新的目标内存页,并基于该新的目标内存页返回执行获取该目标内存页的历史访问次数;若否,则回收该目标内存页。本申请通过这种在内存页回收之前先进行访问次数判断的方式,对于访问次数多的内存页来说,其不容易被回收,进而提高这些内存页中存储数据的缓存命中率。
本申请实施例还提供一种电子设备。所述电子设备可以是智能手机、平板电脑等设备。请参阅图5,图5为本申请实施例提供的电子设备的第一种结构示意图。电子设备400包括处理器401和存储器402。其中,处理器401与存储器402电性连接。
处理器401是电子设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或调用存储在存储器402内的计算机程序,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
存储器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逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
虽然图中未示出,电子设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,其中,所述内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;
从所述内存页链表的链表尾部确定访问时间最远的目标内存页;
获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值;
若是,则从所述内存页链表中确定出访问时间早于所述目标内存页、且与所述目标内存页相邻的内存页,作为新的目标内存页,并基于所述新的目标内存页返回执行获取所述目标内存页的历史访问次数;
若否,则回收所述目标内存页。
由上可知,本申请实施例提供了一种电子设备,所述电子设备在需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,该内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;从该内存页链表的链表尾部确定访问时间最远的目标内存页;获取该目标内存页的历史访问次数,并判断该历史访问次数是否大于第一预设阈值;若是,则从该内存页链表中确定出访问时间早于该目标内存页、且与该目标内存页相邻的内存页,作为新的目标内存页,并基于该新的目标内存页返回执行获取该目标内存页的历史访问次数;若否,则回收该目标内存页。本申请通过这种在内存页回收之前先进行访问次数判断的方式,对于访问次数多的内存页来说,其不容易被回收,进而提高这些内存页中存储数据的缓存命中率。
本申请实施例还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的内存回收方法。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
此外,本申请中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是某些实施例还包括没有列出的步骤或模块,或某些实施例还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
以上对本申请实施例所提供的内存回收方法、装置、存储介质及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种内存回收方法,其特征在于,包括:
当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,其中,所述内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;
从所述内存页链表的链表尾部确定访问时间最远的目标内存页;
获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值;
若是,则从所述内存页链表中确定出访问时间早于所述目标内存页、且与所述目标内存页相邻的内存页,作为新的目标内存页,并基于所述新的目标内存页返回执行获取所述目标内存页的历史访问次数;
若否,则回收所述目标内存页。
2.如权利要求1所述的内存回收方法,其特征在于,所述回收所述目标内存页之后,还包括:
判断回收操作后,处于空闲状态的内存页数量是否满足内存分配需求;
若否,则返回执行从所述内存页链表中确定出访问时间早于所述目标内存页、且与所述目标内存页相邻的内存页,作为新的目标内存页,并基于所述新的目标内存页执行获取所述目标内存页的历史访问次数。
3.如权利要求1所述的内存回收方法,其特征在于,所述获取所述目标内存页的历史访问次数,包括:
获取所述目标内存页在预设历史时长内的历史访问次数。
4.如权利要求1所述的内存回收方法,其特征在于,所述获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值之后,还包括:
若是,则为所述目标内存页面添加预设标记;
所述获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值之前,还包括:
判断所述目标内存页是否具有所述预设标记;
若所述目标内存页不具有所述预设标记,则执行获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值;
若所述目标内存页具有所述预设标记,则回收所述目标内存页。
5.如权利要求4所述的内存回收方法,其特征在于,所述内存页链表包括第一内存页链表和第二内存页链表,所述第一内存页链表中的内存页的访问时间晚于所述第二内存页链表中的内存页的访问时间;
所述从所述内存页链表的链表尾部确定访问时间最远的目标内存页,包括:
从所述第二内存页链表的链表尾部确定访问时间最远的目标内存页。
6.如权利要求5所述的内存回收方法,其特征在于,所述获取由处于已分配状态的内存页的页帧号构成的内存页链表之前,还包括:
当需要进行内存页回收时,判断所述第一内存页链表中的内存页数量是否大于第二预设阈值;
若是,将超出所述第二预设阈值的内存页的页帧号,从所述第一内存页链表的链表尾部移至所述第二内存页链表的链表头部。
7.如权利要求5所述的内存回收方法,其特征在于,还包括:
当接收到内存页访问请求时,确定所述内存页访问请求对应的内存页的目标页帧号;
当所述目标页帧号位于所述第二内存页链表中时,将所述目标页帧号从所述第二内存页链表移至所述第一内存页链表的链表头部,并在所述内存页访问请求对应的内存页具有所述预设标签时,将所述预设标签删除。
8.如权利要求1至7任一项所述的内存回收方法,其特征在于,当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表之前,还包括:
当接收到内存分配请求时,检测空闲内存量是否小于第二预设阈值;
当所述空闲内存量小于所述第二预设阈值时,判定需要进行内存页回收。
9.一种内存回收装置,其特征在于,包括:
链表获取单元,用于当需要进行内存页回收时,获取由处于已分配状态的内存页的页帧号构成的内存页链表,其中,所述内存页链表中的页帧号按照访问时间由近至远的顺序由链表头部排列至链表尾部;
内存页确定单元,用于从所述内存页链表的链表尾部确定访问时间最远的目标内存页;
访问统计单元,用于获取所述目标内存页的历史访问次数,并判断所述历史访问次数是否大于第一预设阈值;
所述内存页确定单元还用于:若所述历史访问次数大于所述第一预设阈值,则从所述内存页链表中确定出访问时间早于所述目标内存页、且与所述目标内存页相邻的内存页,作为新的目标内存页,并基于所述新的目标内存页返回执行获取所述目标内存页的历史访问次数;
内存回收单元,用于若所述历史访问次数不大于所述第一预设阈值,则回收所述目标内存页。
10.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至8任一项所述的内存回收方法。
11.一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1至8任一项所述的内存回收方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010093543.8A CN111274039B (zh) | 2020-02-14 | 2020-02-14 | 内存回收方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010093543.8A CN111274039B (zh) | 2020-02-14 | 2020-02-14 | 内存回收方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274039A true CN111274039A (zh) | 2020-06-12 |
CN111274039B CN111274039B (zh) | 2023-12-08 |
Family
ID=70999568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010093543.8A Active CN111274039B (zh) | 2020-02-14 | 2020-02-14 | 内存回收方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111274039B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035253A (zh) * | 2020-08-27 | 2020-12-04 | 浪潮商用机器有限公司 | 一种linux系统页缓存回收方法及相关装置 |
CN112052089A (zh) * | 2020-09-01 | 2020-12-08 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN112069433A (zh) * | 2020-09-10 | 2020-12-11 | Oppo(重庆)智能科技有限公司 | 文件页面处理方法、装置、终端设备以及存储介质 |
CN115328856A (zh) * | 2022-07-05 | 2022-11-11 | 荣耀终端有限公司 | 一种文件页管理的方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902805A (zh) * | 2012-10-15 | 2013-01-30 | 东软集团股份有限公司 | 一种页面访问方法和装置 |
CN103810115A (zh) * | 2012-11-15 | 2014-05-21 | 深圳市腾讯计算机系统有限公司 | 一种内存池的管理方法和装置 |
CN106227598A (zh) * | 2016-07-20 | 2016-12-14 | 浪潮电子信息产业股份有限公司 | 一种缓存资源的回收方法 |
CN108073458A (zh) * | 2017-12-28 | 2018-05-25 | 努比亚技术有限公司 | 内存回收方法、移动终端及计算机可读存储介质 |
CN108563506A (zh) * | 2018-04-11 | 2018-09-21 | 青岛海信移动通信技术股份有限公司 | 移动终端的内存回收方法及装置 |
CN110018899A (zh) * | 2018-01-10 | 2019-07-16 | 华为技术有限公司 | 回收内存的方法及装置 |
-
2020
- 2020-02-14 CN CN202010093543.8A patent/CN111274039B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902805A (zh) * | 2012-10-15 | 2013-01-30 | 东软集团股份有限公司 | 一种页面访问方法和装置 |
CN103810115A (zh) * | 2012-11-15 | 2014-05-21 | 深圳市腾讯计算机系统有限公司 | 一种内存池的管理方法和装置 |
CN106227598A (zh) * | 2016-07-20 | 2016-12-14 | 浪潮电子信息产业股份有限公司 | 一种缓存资源的回收方法 |
CN108073458A (zh) * | 2017-12-28 | 2018-05-25 | 努比亚技术有限公司 | 内存回收方法、移动终端及计算机可读存储介质 |
CN110018899A (zh) * | 2018-01-10 | 2019-07-16 | 华为技术有限公司 | 回收内存的方法及装置 |
CN108563506A (zh) * | 2018-04-11 | 2018-09-21 | 青岛海信移动通信技术股份有限公司 | 移动终端的内存回收方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035253A (zh) * | 2020-08-27 | 2020-12-04 | 浪潮商用机器有限公司 | 一种linux系统页缓存回收方法及相关装置 |
CN112035253B (zh) * | 2020-08-27 | 2023-01-20 | 浪潮商用机器有限公司 | 一种linux系统页缓存回收方法及相关装置 |
CN112052089A (zh) * | 2020-09-01 | 2020-12-08 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN112069433A (zh) * | 2020-09-10 | 2020-12-11 | Oppo(重庆)智能科技有限公司 | 文件页面处理方法、装置、终端设备以及存储介质 |
CN115328856A (zh) * | 2022-07-05 | 2022-11-11 | 荣耀终端有限公司 | 一种文件页管理的方法、装置及电子设备 |
CN115328856B (zh) * | 2022-07-05 | 2023-05-09 | 荣耀终端有限公司 | 一种文件页管理的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111274039B (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111274039B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
CN111158910B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
CN110888746A (zh) | 内存管理方法、装置、存储介质及电子设备 | |
CN111078406B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
US20190347113A1 (en) | Method for Establishing Application Prediction Model, Storage Medium, and Terminal | |
CN111078586B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
US10698837B2 (en) | Memory processing method and device and storage medium | |
CN111078410B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
WO2019137252A1 (zh) | 内存处理方法、电子设备、计算机可读存储介质 | |
CN110018900B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
CN107885545B (zh) | 应用管理方法、装置、存储介质及电子设备 | |
CN114185494B (zh) | 内存匿名页的处理方法、电子设备及可读存储介质 | |
WO2021077261A1 (zh) | 应用程序管理方法及装置、电子设备以及存储介质 | |
WO2019128542A1 (zh) | 应用处理方法、电子设备、计算机可读存储介质 | |
CN111984413A (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN111475299B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN111078587B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN111381953B (zh) | 进程管理方法、装置、存储介质及电子设备 | |
CN111008079B (zh) | 进程管理方法、装置、存储介质及电子设备 | |
CN110955614A (zh) | 文件缓存的回收方法、装置、存储介质及终端 | |
CN110647294B (zh) | 存储块回收方法、装置、存储介质及电子设备 | |
CN110543432B (zh) | 内存碎片整理方法、装置、终端及存储介质 | |
CN111078405B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN115421907A (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN114218126A (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 |