CN111984413A - 内存回收方法、装置、电子设备及存储介质 - Google Patents
内存回收方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111984413A CN111984413A CN202010844649.7A CN202010844649A CN111984413A CN 111984413 A CN111984413 A CN 111984413A CN 202010844649 A CN202010844649 A CN 202010844649A CN 111984413 A CN111984413 A CN 111984413A
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- recovered
- recycled
- foreground
- 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.)
- Pending
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例公开了一种内存回收方法、装置、电子设备及存储介质。所述方法包括:响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型;若基于所述标识检测到所述待回收内存页面为前台页面,对所述待回收内存页面进行保护;若基于所述标识检测到所述待回收内存页面不为前台页面,对所述待回收内存页面进行回收。通过上述方法,在进行内存页面回收时,先判断待回收内存页面是否为前台页面,如果待回收内存页面为前台页面,则对待回收内存页面进行保护,减少了内存页面被回收的次数,进而可以减少进程因内存页面的重新分配而导致的卡顿。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种内存回收方法、装置、电子设备及存储介质。
背景技术
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。电子设备中的内存的空间是有限的,为了保证***有足够的内存可以使用,电子设备的***通常会在一定的情况下进行内存回收。但是,在相关的内存回收方式中,在对内存页面进行回收后,需要对内存页面进行重新分配,可能会导致进程因为内存页面的重新分配而发生卡顿。
发明内容
鉴于上述问题,本申请提出了一种内存回收方法、装置、电子设备及存储介质,以改善上述问题。
第一方面,本申请提供了一种内存回收方法,所述方法包括:响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型;若基于所述标识检测到所述待回收内存页面为前台页面,对所述待回收内存页面进行保护;若基于所述标识检测到所述待回收内存页面不为前台页面,对所述待回收内存页面进行回收。
第二方面,本申请提供了一种内存回收装置,所述装置包括:标识获取单元,用于响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型;保护单元,用于若基于所述标识检测到所述待回收内存页面为前台页面,对所述待回收内存页面进行保护;回收单元,用于若基于所述标识检测到所述待回收内存页面不为前台页面,对所述待回收内存页面进行回收。
第三方面,本申请提供了一种电子设备,包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行以实现上述的方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行上述的方法。
本申请提供的一种内存回收方法、装置、电子设备及存储介质,响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型,若基于标识检测到待回收内存页面为前台页面,对待回收内存页面进行保护,若基于标识检测到待回收内存页面不为前台页面,对待回收内存页面进行回收。通过上述方法,在进行内存页面回收时,先判断待回收内存页面是否为前台页面,如果待回收内存页面为前台页面,则对待回收内存页面进行保护,减少了内存页面被回收的次数,进而可以减少进程因内存页面的重新分配而导致的卡顿。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提出的一种内存回收方法的流程图;
图2示出了本申请另一实施例提出的一种内存回收方法的流程图;
图3示出了本申请再一实施例提出的一种内存回收方法的流程图;
图4示出了本申请又一实施例提出的一种内存回收方法的流程图;
图5示出了本申请实施例提出的一种内存回收装置的结构框图;
图6示出了本申请再一实施例提出的一种内存回收装置的结构框图;
图7示出了本申请实时中的用于执行根据本申请实施例的内存回收方法的电子设备的结构框图;
图8示出了本申请实时中的用于保存或者携带实现根据本申请实施例的内存回收方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
对于操作***而言,因为内存本身的大小是有限的,所以内存回收是一个较为普遍的机制。而之所以要进行内存回收,主要原因有两个:***需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让***的剩余内存长期处于很少的状态。还有,当有大于空闲内存的申请到来的时候,也会触发内存回收。
而发明人在对相关的内存回收过程的研究发现,在相关的内存回收方式中,在对内存页面进行回收后,需要对内存页面进行重新分配,可能会导致进程因为内存页面的重新分配而发生卡顿。比如,利用LRU算法对内存进行回收,LRU算法的核心思想是回收最近最少使用的内存页面。LRU 算法的缺陷在于它只考虑内存页面最近的是否使用,而没有考虑内存页面的重要性,比如,有些内存页面是前台进程或者UI线程的内存页面,回收这些内存页面可能导致与人交互的界面因内存页面的重新分配而发生卡顿,而回收后台进程的一些内存页面则对与人交互的体验影响较小。
因此,发明人提出了本申请中的响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型,若基于标识检测到待回收内存页面为前台页面,对待回收内存页面进行保护,若基于标识检测到待回收内存页面不为前台页面,对待回收内存页面进行回收,在进行内存页面回收时,先判断待回收内存页面是否为前台页面,如果待回收内存页面为前台页面,则对待回收内存页面进行保护,减少了内存页面被回收的次数,进而可以减少进程因内存页面的重新分配而导致的卡顿的内存回收的方法、装置、电子设备及存储介质。
下面将结合附图具体描述本申请的各实施例。
请参阅图1,本申请实施例提供的一种内存回收方法,所述方法包括:
S110:响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型。
其中,所述标识用于表征内存页面的类型,比如可以将内存页面标记为前台页面或者将内存页面标记为后台页面等。所述待回收内存页面为当前需要进行内存回收的内存页面,所述待回收内存页面可以包括一个或者多个内存页面。
作为一种方式,所述内存回收指令可以理解为根据进程的内存页面的分配需求而触发的进行内存页面回收的指令。
可以理解的是,当电子设备进行内存页面分配的时候,例如,大内存页面分配的时候,***当前可用内存不一定能满足当前的内存页面分配需求,所以需要回收内存页面来满足内存页面分配需求。
可选的,所述内存回收指令也可以理解为由用户操作触发的进行内存页面回收的指令,比如,当检测到电子设备中有新的应用程序被下载安装时,可能会检测到***的可用内存空间不足,于是需要进行内存回收。
进一步的,可以在***的可用内存小于一定阈值时触发进行内存页面回收(即根据电子设备内安装的应用程序的内存占用信息触发内存页面回收)、在监测到有应用程序被启动或切换到前台界面时,根据该应用程序的内存占用信息以及***的可用内存大小触发内存页面回收(即根据应用程序被用户操作使用的信息及内存占用信息触发内存页面回收)。
进一步的,当电子设备接收到内存回收指令时,获取内存***中当前需要进行内存回收的内存页面的标识,根据内存页面的标识判断是否对当前需要进行内存回收的内存页面进行回收操作。
S120:若基于所述标识检测到所述待回收内存页面为前台页面,对所述待回收内存页面进行保护。
作为一种方式,所述前台页面可以理解为用户交互的页面。所述保护可以理解为不对所述待回收内存页面进行回收操作。进一步的,当根据获取到的内存页面的标识判断当前需要进行内存回收的内存页面为前台页面时,则不对当前需要进行内存回收的内存页面进行回收操作。
S130:若基于所述标识检测到所述待回收内存页面不为前台页面,对所述待回收内存页面进行回收。
作为一种方式,当根据获取到的内存页面的标识判断当前待回收页面不为前台页面时,对当前待回收页面进行回收操作。
可选的,在对当前待回收页面进行回收时,可以根据内存回收比例对当前待回收内存页面进行回收。其中,所述内存回收比例可以为当前需要进行内存回收的内存页面在进行内存回收之前的***默认回收比例。
本申请实施例提供的一种内存回收方法,响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型,若基于标识检测到待回收内存页面为前台页面,对待回收内存页面进行保护,若基于标识检测到待回收内存页面不为前台页面,对待回收内存页面进行回收。通过上述方法,在进行内存页面回收时,先判断待回收内存页面是否为前台页面,如果待回收内存页面为前台页面,则对待回收内存页面进行保护,减少了内存页面被回收的次数,进而可以减少进程因内存页面的重新分配而导致的卡顿。
请参阅图2,本申请实施例提供的一种内存回收方法,所述方法包括:
S210:响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型。
作为一种方式,响应于内存回收指令,首先需要选择内存回收的对象,也就是应用程序。示例性的,对于一些重要的***应用,比如智能中心、联系人、定位、电池、网络等,为了保证电子设备的基本功能,可以不将其作为被回收的对象,可选的,可以选择第三方应用程序作为内存回收的对象。
其中,一个应用程序通常包括多个进程,对应用程序进行内存回收可以进程为单位进行回收,并且可以对应用程序的全部进程或部分进程进行回收。具体的,可以选择一个应用程序所包括的全部进程对应的内存页面作为待回收内存页面,也可以选择将一个应用程序所包括的部分进程对应的内存页面作为待回收内存页面。
S210所包括的步骤的详细解释可以参照前述实施例中的对应步骤,这里不再赘述。
S220:若基于所述标识检测到所述待回收内存页面为前台页面,判断所述待回收内存页面是否为匿名页面。
其中,所述匿名页面(Anonymous page)可以理解为没有文件背景的页,如堆,栈,数据段等,不是以文件形式存在的。
作为一种方式,可以根据待回收内存页面的存在形式确定待回收内存页面是否为匿名页面。具体的,如果待回收内存页面的存在形式为堆,栈或者数据段等,则确定待回收内存页面为匿名页面;如果待回收内存页面的存在形式为以文件形式存在,则确定待回收内存页面不为匿名页面。若所述待回收页面为匿名页面,执行S230;若所述待回收内存页面不为匿名页面,执行步骤S240。
S230:对所述待回收内存页面进行保护。
作为一种方式,如果通过上述方式确定待回收内存页面为匿名页面后,则保护待回收内存页面不被回收。
S240:获取所述待回收内存页面的保护计数。
作为一种方式,若所述待回收内存页面不为匿名页面,则所述待回收内存页面可以为文件页面。其中,所述文件页面可以理解为有文件背景的页,程序去读文件后在内存产生的缓存,例如,对于文件页面所存储的数据可以在磁盘中找到对应的数据。
具体的,当根据待回收内存页面的标识确定了所述待回收内存页面为文件页面时,获取预先为待回收内存页面的设置的保护计数,根据待回收页面对应的保护计数是否为指定值,判断是否对待回收内存页面进行回收。
S250:判断所述待回收内存页面的保护计数是否为指定值。
S260:若所述保护计数为指定值,则对所述待回收内存页面进行回收。
作为一种方式,所述指定值可以为预先设置的内存页面被回收时保护计数的数值。可选的,所述指定值可以为0,若文件页面的保护计数为0,则对文件页面进行回收。进一步的,对于文件页面的回收分两种情况,如果文件页面对应的文件内容没有被修改过,则直接将文件页内容丢弃,以完成没有被修改过的文件页的回收;而如果文件页对应的文件内容被修改了,则将文件内容写回磁盘再将文件页丢弃,以完成没有被修改过的文件页的回收。对于被回收的文件页的文件内容再次使用时,需要时重新从磁盘读取。一般而言,很多文件页是没有被修改的,所以回收过程相对较快。
S270:若所述保护计数不为所述指定值,将所述待回收内存页面的保护计数减一,执行S230。
作为一种方式,如果文件页面的保护计数不为0,将文件页面对应的保护计数进行减一操作,保护文件页面在当次进行内存页面回收时不被回收。
作为一种方式,在对待回收内存页面进行回收时,可以根据预设的回收时间间隔来对待回收内存页面进行回收。
在具体实施中,预设的回收时间间隔可以根据实际需要设置在用户操作应用程序触发与应用程序对应的进程进行内存页面回收的时候,比如可以根据电子设备内安装的应用程序被用户操作使用的信息及内存占用信息确定与应用程序对应的进程的内存页面的回收时间间隔,按照预设的回收时间间隔触发内存页面回收,实现对进程的内存页面进行有计划的回收,使电子设备内可用空闲内存保持在一个较佳的水平。
这里,为了对进程对应的内存页面实现有计划的回收,可以通过设置预设回收时间间隔来实现,预设的回收时间间隔可以为一个,也可以为多个。在使用应用程序频率、时间或/和次数都比较单一的情况下,可以设置一个预设回收时间间隔对与应用程序对应的进程的内存页面进行回收;在使用应用程序频率、时间或/和次数都不稳定的情况下,可以对与使用比较频繁的应用程序的进程的内存页面设置不同的预设回收时间间隔,加快当前情况下与应用程序的进程对应的内存页面的回收速度。比如,若用户全天使用应用程序的频率及内存占用量都比较稳定,可以只设置一个回收时间间隔。例如,在一种方式中,电子设备的某些应用程序是定时启动的,比如闹钟程序,该应用程序只在用户设定的某个时间段使用,相对于通讯类应用程序来说,闹钟程序的使用频率和内存占用量都比较稳定。我们这时就只需要给该应用程序对应的进程的内存页面设置一个回收时间间隔,比如在使用闹钟程序之后立刻进行内存页面回收。
若用户在一天内的不同时间段使用应用的频率区别较大,则可以在一天内的不同时间段使用不同的内存回收时间间隔。例如,在一种方式中,电子设备的某些应用程序使用的频率会根据用户本身改变。比如,聊天类应用程序,用户会根据不同的情况去使用该应用程序,所以,该应用程序的使用频率是多变的,这时,就可以设置多个内存回收时间间隔,在不同的时间段使用不同的回收时间间隔去进行内存回收,有利于提高电子设备使用的流畅性。
本申请实施例提供的一种内存回收方法,首先响应于内存回收指令,获取待回收页面的标识,其中,所述标识用于表征内存页面的类型,若基于所述标识检测到待回收页面为前台页面,再判断该待回收内存页面是否为匿名页面,若待回收内存页面为匿名页面,对待回收内存页面进行保护,,若基于标识检测到待回收内存页面不为匿名页面,获取待回收页面的保护计数,若保护计数为指定值,则对待回收内存页面进行回收,若保护计数不为指定值,将该待回收内存页面的保护计数减一,并对待回收内存页面进行保护。通过上述方法,如果内存页面既是前台页面又是匿名页面,则对该内存页面进行保护,降低了待回收页面被回收的概率,进而可以降低内存页面重新分配的概率,进而可以减少进程因内存页面的重新分配而导致的卡顿。
请参阅图3,本申请实施例提供的一种内存回收方法,所述方法包括:
S310:获取需要分配内存页面的进程,为与所述进程对应的内存页面设置对应的标识和保护计数。
可以理解的是,所述需要分配内存页面的进程可以为未处于运行状态的应用程序对应的需要分配内存页面的进程。***的可用内存会受到当前处于运行状态的应用程序的数量的不同而发生变化。具体的,当前处于运行状态的应用程序的数量可能不同,那么所要消耗的内存也可能会有不同,并且也会导致当前***的可用内存可能会不同。因此,在检测到***的可用内存不足时,需要进行内存回收操作,以便满足进程的内存页面分配需求。
其中,作为一种触发机制,电子设备可以对获取的当前可用的内存进行判断,进而在判定当前可用内存小于指定阈值时,开始进行内存回收。而作为另一种方式,为了使得电子设备可以在当前可用内存小于指定阈值之前就开始提前进行内存回收,可以引入第一内存来帮助提前进行内存回收。
其中,需要说明的是,所述第一内存表征一个较小的内存容量。例如,设置第一内存的值为10MB,触发电子设备进行内存回收的可用内存的指定阈值为40MB,在这种方式下,当前电子设备在可用内存为40MB的时候才会进行内存回收。不同的是,在引入第一内存的情况下,电子设备可以在***可用内存小于50MB的时候就进行内存回收。
从而通过这种方式可以使得在进程所需内存较多时,对其他进程的内存页面提前进行内存回收操作,以便更好地满足进程的内存页面分配需求。
作为一种方式,所述获取需要分配内存页面的进程,为与所述进程对应的内存页面设置对应的标识和保护计数的步骤,可以包括:检测所述进程是否为前台进程或者UI进程;若所述进程为前台进程或者UI进程,将与所述进程对应的内存页面标记为前台页面,并将所述内存页面的保护计数设置为最大值。
其中,可以通过在页面管理结构增加一个值来表示保护计数,所述保护计数为表示内存页面可以被回收多少次才能真正被回收的次数。所述前台进程为用户使用的有控制终端的进程;所述UI进程可以理解为UI线程,所述UI线程为用户更新UI界面的特殊线程。可选的,可以根据进程相应的内存页面的标注来区分不同的进程。具体的,在进行内存页面分配时对内存页面的flag进行标注。比如,在进行前台进程分配内存页面时,将该进程的内存页面的flag标注为RT_flag;在进行UI进程分配内存页面时,将该进程的内存页面的flag标注为UI_flag。
进一步的,当通过上述方法,检测到进程为前台进程或者UI进程时,将与所述进程对应的内存页面标记为前台页面,并将该进程的保护计数设置为最大值,其中,最大值可以为3,进一步的,所述最大值可以根据需要进行调整;若检测到进程为后台进程时,将与该后台进程对应的内存页面标记为后台页面,并不设置对应的保护计数。
可选的,若检测到进程为前台进程或这UI进程,为所述进程对应的内存页面设置对应的保护计数时,可以根据进程在指定时间段内的使用频次为进程设置不同的保护计数。具体的,获取当前需要进行内存页面分配的进程在指定时间段内的使用频次,进而可以根据进程在指定时间段内的使用频次的不同,为不同进程的内存页面分配不同的保护计数,示例性,比如当前需要进行内存页面分配的进程包括进程1、进程2以及进程3,进程 1在一小时内的使用频次为5次,进程2在一小时内的使用频次为3次,进程3在一小时内的使用频次为6次,进而,可以将进程1和进程3对应的内存页面的保护计数设置为3,将进程2对应的内存页面的保护计数设置为2。
可选的,还可以根据当前需要进行内存页面分配的进程的优先级,为不同优先级的进程对应的内存页面设置不同的保护计数。具体的,可以将优先级最高的进程对应的内存页面的保护计数设置为最大值,将优先级最低的进程对应的内存页面的保护计数设置为最小值,将其他优先级的进程对应的内存页面的保护计数设置为介于最大值与最小值之间的值。其中,不同进程的优先级可以根据进程所占用的***内存的大小进行划分。具体的,可以为占用***内存最大的进程的优先级最高,占用***内存最小的进程的优先级最低等。
示例性的,保护计数的最大值可以为3,最小值可以为1,当前需要进行内存页面分配的进程有进程A、进程B以及进程C,其中,3个进程的优先级由高到低的顺序为进程B、进程A以及进程C,进而可以将进程B 的保护计数设置为3,将进程A的保护计数设置为2,将进程C的保护计数设置为1。
可选的,所述与进程对应的文件页面可以为匿名页面或者文件页面(File page)。可以理解的是,在回收匿名页面的过程中,是将匿名页面压缩后存放在RAM中,由于该过程需要使用CPU将匿名页压缩,对于压缩后的匿名页面在使用时需要再解压缩,所以匿名页面的回收过程需要消耗一定的CPU时间,相对较慢,并且匿名页面在进程被杀后会自动回收,但是文件页面是不会随着进程的消亡自动回收的,因此不能一直保护文件页面,需要给文件页面设置保护计数。进一步的,可以选择只为文件页面设置对应的保护计数。
S320:响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型。
S330:若基于所述标识检测到所述待回收内存页面为前台页面,判断所述待回收内存页面是否为匿名页面。若基于所述标识检测到所述待回收内存页面为匿名页面,执行S340;若基于所述标识检测到所述待回收内存页面不为匿名页面,执行S340;
S340:对所述待回收内存页面进行保护。
S350:获取所述待回收内存页面的保护计数。
S360:判断所述待回收内存页面的保护计数是否为指定值。
S370:若所述保护计数为指定值,则对所述待回收内存页面进行回收。
S380:若所述保护计数不为所述指定值,将所述待回收内存页面的保护计数减一,执行步骤S340。
S320、S330、S340、S350、S360、S370以及S380所包括的步骤的详细解释可以参照前述实施例中的对应步骤,这里不再赘述。
本申请实施例提供的一种内存回收方法,首先获取需要分配内存页面的进程,为与该进程对应的内存页面设置对应的标识和保护计数,然后响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型,若基于标识检测到待回收内存页面为前台页面,判断待回收内存页面是否为匿名页面,若基于标识检测到待回收内存页面不为匿名页面,获取待回收页面的保护计数,若保护计数为指定值,则对待回收内存页面进行回收,若保护计数不为指定值,将该待回收内存页面的保护计数减一,并对待回收内存页面进行保护。通过上述方法,预先为需要分配内存页面的进程设置对应的标识和保护计数,通过保护计数来保护待回收页面可以多次不被回收,从而使得在短时间内不需要重新分配内存页面,减少了对内存页面的回收次数,进而可以减少进程因内存页面的重新分配而导致的卡顿。
请参阅图4,本申请实施例提供的一种内存回收方法,所述方法包括:
S410:响应于内存回收指令;
S420:判断待回收内存页面是否由非活跃页面变为活跃页面。
作为一种方式,所述非活跃页面可以理解为在指定时间段内被访问次数为超过预设值的内存页面,所述活跃页面可以理解为在指定时间段内被访问次数超过预设值的内存页面。其中,所述预设值可以为预先设置的内存页面从非活跃页面变为活跃页面被访问的最少次数,所述预设值可以设置为任意数值。
进一步的,可以根据待回收页面在指定时间段内被访问的次数来确定待回收内存页面是否由非活跃页面变为活跃页面。其中,所述指定时间段可以为任意时间段,比如,在进行内存回收操作前一小时内。
S430:若所述待回收内存页面由非活跃页面变为活跃页面,执行S440;若所述待回收页面没有由非活跃页面变为活跃页面,执行S450。
S440:对所述待回收内存页面进行保护。
作为一种方式,当待回收内存页面在指定时间段内被访问的次数超过预设值时,判断待回收页面由非活跃页面变为活跃页面。示例性的,所述预设值为7次,当检测到待回收内存页面在进行内存回收操作前一小时内被访问的次数为8,确定待回收内存页面有非活跃页面变为活跃页面,保护该待回收页面不被回收。
S450:判断所述待回收内存页面是否为前台页面。
作为一种方式,如果根据待回收内存页面在指定时间段内的被访问的次数,确定待回收内存页面没有由非活跃页面变为活跃页面,则获取该待回收内存页面的标识,根据获取到的待回收内存页面标识可以判断所述待回收页面是否为前台页面。
S460:若所述待回收内存页面为前台页面,将所述待回收内存页面设置为活跃页面,并将所述待回收内存页面的保护计数设置为最大值,执行 S440。
作为一种方式,通过获取到的待回收内存页面的标识确定了待回收内存页面为前台页面,则将待回收内存页面设置为活跃页面,并将待回收内存页面的保护计数设置为最大值,保护待回收页面不被回收。通过上述方法,只需要前台页面被访问了一次,就可以确定该前台页面为活跃页面,进而可以确定该前台页面必须被回收多次才能真正被回收。
S470:若所述待回收内存页面不为前台页面,对所述待回收内存页面进行回收。
本申请实施例提供的一种内存回收方法,响应于内存回收指令,判断待回收页面是否由非活跃页面变为活跃页面,若是,对待回收页面进行保护,若否,判断待回收页面是否为前台页面,若待回收页面为前台页面,将待回收页面设置为活跃页面,并将该待回收页面的保护计数设置为最大值,对该待回收页面进行保护。通过上述方法,对活跃页面进行保护,减少了活跃页面被回收的次数,进而可以减少进程因内存页面的重新分配而导致的卡顿。
请参阅图5,本申请提供的一种内存回收装置500,所述装置500包括:
标识获取单元510,用于响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型。
保护单元520,用于若基于所述标识检测到所述待回收内存页面为前台页面,对所述待回收内存页面进行保护。
作为一种方式,所述保护单元520具体用于若所述待回收内存页面为前台页面,判断所述待回收内存页面是否为匿名页面;若所述待回收内存页面为匿名页面,对所述待回收内存页面进行保护。
作为另一种方式,所述保护单元520具体用于若所述待回收内存页面不为匿名页面,获取所述待回收页面的保护计数;若所述保护计数为指定值,则对所述待回收内存页面进行回收;若所述保护计数不为所述指定值,将所述待回收内存页面的保护计数减一,并对所述待回收内存页面进行保护。
可选的,所述保护单元520还用于判断所述待回收内存页面是否由非活跃页面变为活跃页面;若所述待回收内存页面由非活跃页面变为活跃页面,对所述待回收内存页面进行保护。
可选的,所述保护单元520还用于若所述待回收页面没有由非活跃页面变为活跃页面,判断所述待回收内存页面是否为前台页面;若所述待回收内存页面为前台页面,将所述待回收内存页面设置为活跃页面,并将所述待回收内存页面的保护计数设置为最大值,对所述待回收页面进行保护。
回收单元530,用于若基于所述标识检测到所述待回收内存页面不为前台页面,对所述待回收内存页面进行回收。
作为一种方式,如图6所示,所述装置500,还包括:
配置单元540,具体用于获取需要分配内存页面的进程,为与所述进程对应的内存页面设置对应的标识和保护计数。
所述配置单元540具体用于检测所述进程是否为前台进程或者UI进程;若所述进程为前台进程或者UI进程,将与所述进程对应的内存页面标记为前台页面,并将所述内存页面的保护计数设置为最大值。
需要说明的是,本申请中装置实施例与前述方法实施例是相互对应的,装置实施例中具体的原理可以参见前述方法实施例中的内容,此处不再赘述。
下面将结合图7对本申请提供的一种电子设备进行说明。
请参阅图7,基于上述的内存回收方法、装置,本申请实施例还提供的另一种可以执行前述内存回收方法的电子设备100。电子设备100包括相互耦合的一个或多个(图中仅示出一个)处理器102、存储器104以及网络模块106。其中,该存储器104中存储有可以执行前述实施例中内容的程序,而处理器 102可以执行该存储器104中存储的程序。
其中,处理器102可以包括一个或者多个处理核。处理器102利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器 104内的指令、程序、代码集或指令集,以及调用存储在存储器104内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器102可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field- Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array, PLA)中的至少一种硬件形式来实现。处理器102可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器102中,单独通过一块通信芯片进行实现。
存储器104可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器104可用于存储指令、程序、代码、代码集或指令集。存储器104可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端100在使用中所创建的数据 (比如电话本、音视频数据、聊天记录数据)等。
所述网络模块106用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯,例如和音频播放设备进行通讯。所述网络模块106可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。所述网络模块106可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。例如,网络模块106可以与基站进行信息交互。
请参考图8,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
本申请提供的一种内存回收方法、装置以及电子设备,响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型,若基于标识检测到待回收内存页面为前台页面,对待回收内存页面进行保护,若基于标识检测到待回收内存页面不为前台页面,对待回收内存页面进行回收。通过上述方法,在进行内存页面回收时,先判断待回收内存页面是否为前台页面,如果待回收内存页面为前台页面,则对待回收内存页面进行保护,减少了内存页面被回收的次数,进而可以减少进程因内存页面的重新分配而导致的卡顿。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种内存回收方法,其特征在于,所述方法包括:
响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型;
若基于所述标识检测到所述待回收内存页面为前台页面,对所述待回收内存页面进行保护;
若基于所述标识检测到所述待回收内存页面不为前台页面,对所述待回收内存页面进行回收。
2.根据权利要求1所述的方法,其特征在于,所述若基于所述标识检测到所述待回收内存页面为前台页面,对所述待回收内存页面进行保护,包括:
若所述待回收内存页面为前台页面,判断所述待回收内存页面是否为匿名页面;
若所述待回收内存页面为匿名页面,对所述待回收内存页面进行保护。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述待回收内存页面不为匿名页面,获取所述待回收页面的保护计数;
若所述保护计数为指定值,则对所述待回收内存页面进行回收;
若所述保护计数不为所述指定值,将所述待回收内存页面的保护计数减一,并对所述待回收内存页面进行保护。
4.根据权利要求1所述的方法,其特征在于,所述响应于内存回收指令,获取待回收内存页面的标识之前还包括:
获取需要分配内存页面的进程,为与所述进程对应的内存页面设置对应的标识和保护计数。
5.根据权利要求4所述的方法,其特征在于,所述获取需要分配内存页面的进程,为与所述进程对应的内存页面设置对应的标识和保护计数,包括:
检测所述进程是否为前台进程或者UI进程;
若所述进程为前台进程或者UI进程,将与所述进程对应的内存页面标记为前台页面,并将所述内存页面的保护计数设置为最大值。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述待回收内存页面是否由非活跃页面变为活跃页面;
若所述待回收内存页面由非活跃页面变为活跃页面,对所述待回收内存页面进行保护。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述待回收页面没有由非活跃页面变为活跃页面,判断所述待回收内存页面是否为前台页面;
若所述待回收内存页面为前台页面,将所述待回收内存页面设置为活跃页面,并将所述待回收内存页面的保护计数设置为最大值,对所述待回收页面进行保护。
8.一种内存回收装置,其特征在于,所述装置包括:
标识获取单元,用于响应于内存回收指令,获取待回收内存页面的标识,其中,所述标识用于表征内存页面的类型;
保护单元,用于若基于所述标识检测到所述待回收内存页面为前台页面,对所述待回收内存页面进行保护;
回收单元,用于若基于所述标识检测到所述待回收内存页面不为前台页面,对所述待回收内存页面进行回收。
9.一种电子设备,其特征在于,包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行权利要求1-7任一所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010844649.7A CN111984413A (zh) | 2020-08-20 | 2020-08-20 | 内存回收方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010844649.7A CN111984413A (zh) | 2020-08-20 | 2020-08-20 | 内存回收方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984413A true CN111984413A (zh) | 2020-11-24 |
Family
ID=73442842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010844649.7A Pending CN111984413A (zh) | 2020-08-20 | 2020-08-20 | 内存回收方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984413A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010228A (zh) * | 2021-03-19 | 2021-06-22 | Oppo广东移动通信有限公司 | 内存处理方法、装置、电子设备和计算机可读存储介质 |
CN114185494A (zh) * | 2022-02-16 | 2022-03-15 | 荣耀终端有限公司 | 内存匿名页的处理方法、电子设备及可读存储介质 |
WO2024032430A1 (zh) * | 2022-08-09 | 2024-02-15 | 华为技术有限公司 | 管理内存的方法和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704321A (zh) * | 2017-09-30 | 2018-02-16 | 北京元心科技有限公司 | 内存分配的方法、装置及终端设备 |
CN108073520A (zh) * | 2016-11-10 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 一种内存控制方法及装置 |
CN108228340A (zh) * | 2017-08-07 | 2018-06-29 | 珠海市魅族科技有限公司 | 终端控制方法及装置、终端设备及计算机可读存储介质 |
-
2020
- 2020-08-20 CN CN202010844649.7A patent/CN111984413A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073520A (zh) * | 2016-11-10 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 一种内存控制方法及装置 |
CN108228340A (zh) * | 2017-08-07 | 2018-06-29 | 珠海市魅族科技有限公司 | 终端控制方法及装置、终端设备及计算机可读存储介质 |
CN107704321A (zh) * | 2017-09-30 | 2018-02-16 | 北京元心科技有限公司 | 内存分配的方法、装置及终端设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010228A (zh) * | 2021-03-19 | 2021-06-22 | Oppo广东移动通信有限公司 | 内存处理方法、装置、电子设备和计算机可读存储介质 |
CN114185494A (zh) * | 2022-02-16 | 2022-03-15 | 荣耀终端有限公司 | 内存匿名页的处理方法、电子设备及可读存储介质 |
CN114185494B (zh) * | 2022-02-16 | 2022-07-19 | 荣耀终端有限公司 | 内存匿名页的处理方法、电子设备及可读存储介质 |
WO2024032430A1 (zh) * | 2022-08-09 | 2024-02-15 | 华为技术有限公司 | 管理内存的方法和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110764906B (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN110727605B (zh) | 内存回收方法、装置以及电子设备 | |
CN111984413A (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN110727607B (zh) | 内存回收方法、装置以及电子设备 | |
CN111352861B (zh) | 内存压缩方法、装置及电子设备 | |
CN111158910A (zh) | 内存管理方法、装置、存储介质及电子设备 | |
US20220121495A1 (en) | Memory reclamation method, electronic device and storage medium | |
CN110888746A (zh) | 内存管理方法、装置、存储介质及电子设备 | |
CN108205498B (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
CN108205474B (zh) | 内存管理方法、终端设备、计算机装置以及可读存储介质 | |
CN108228341B (zh) | 内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN108205473B (zh) | 内存处理方法及装置、计算机装置及计算机可读存储介质 | |
CN110765031B (zh) | 数据存储方法、装置、移动终端及存储介质 | |
CN108228449B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN110018902B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
CN109992402B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
CN111274039B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
CN108205471B (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
WO2019076381A1 (zh) | 终端内存回收处理方法及装置 | |
CN115421907A (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN110737606B (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN115421909A (zh) | 内存管理方法、装置、电子设备及存储介质 | |
CN111273769B (zh) | 一种设备控制方法、装置、电子设备及存储介质 | |
CN108287760B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN113392037A (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 |