CN110727606A - 内存回收方法、装置以及电子设备 - Google Patents

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

Info

Publication number
CN110727606A
CN110727606A CN201910927294.5A CN201910927294A CN110727606A CN 110727606 A CN110727606 A CN 110727606A CN 201910927294 A CN201910927294 A CN 201910927294A CN 110727606 A CN110727606 A CN 110727606A
Authority
CN
China
Prior art keywords
memory
recovery
memory recovery
proportion
pressure
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
Application number
CN201910927294.5A
Other languages
English (en)
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.)
Guangdong Oppo Mobile Telecommunications Corp 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 CN201910927294.5A priority Critical patent/CN110727606A/zh
Publication of CN110727606A publication Critical patent/CN110727606A/zh
Priority to EP20868443.1A priority patent/EP3979082A4/en
Priority to PCT/CN2020/116212 priority patent/WO2021057619A1/zh
Priority to US17/564,794 priority patent/US20220121495A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms to release resources
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Abstract

本申请实施例公开了一种内存回收方法、装置以及电子设备。所述方法包括:当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系;获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低;基于所述内存回收比例进行内存回收。从而使得在不同内存压力对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存压力,然后根据当前的内存压力来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性。

Description

内存回收方法、装置以及电子设备
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种内存回收方法、装置以及电子设备。
背景技术
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。电子设备中的内存的空间是有限的,为了保证系统有足够的内存可以使用,电子设备的系统通常会在一定的情况下进行内存回收。但是,在相关的内存回收方式中,还缺乏一定的灵活性。
发明内容
鉴于上述问题,本申请提出了一种内存回收方法、装置以及电子设备,以改善上述问题。
第一方面,本申请提供了一种内存回收方法,所述方法包括:当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系;获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低;基于所述内存回收比例进行内存回收。
第二方面,本申请提供了一种内存回收装置,所述装置包括:内存压力获取单元,用于当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系;回收参数获取单元,用于获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低;内存回收单元,用于基于所述内存回收比例进行内存回收。
第三方面,本申请提供了一种电子设备,包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行以实现上述的方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行上述的方法。
本申请提供的一种内存回收方法、装置以及电子设备,可以在处于内存回收场景时,获取表征历史时间窗口内未回收内存与扫描到的内存的比例关系的内存压力,然后获取与所述内存压力对应的内存回收比例,基于所述内存回收比例进行内存回收。从而使得在不同内存压力对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存压力,然后根据当前的内存压力来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提出的一种内存回收方法的流程图;
图2示出了本申请另一实施例提出的一种内存回收方法的流程图;
图3示出了本申请一实施例提出的一种内存回收方法中周期性的多个时间段的示意图;
图4示出了本申请一实施例提出的一种内存回收方法中周期性的多个时间段中应用程序运行的示意图;
图5示出了本申请再一实施例提出的一种内存回收方法的流程图;
图6示出了本申请又一实施例提出的一种内存回收方法的流程图;
图7示出了本申请一实施例提出的一种内存回收装置的结构框图;
图8示出了本申请再一实施例提出的一种内存回收装置的结构框图;
图9示出了本申请实时中的用于执行根据本申请实施例的内存回收方法的电子设备的结构框图;
图10示出了本申请实时中的用于保存或者携带实现根据本申请实施例的内存回收方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
对于操作系统而言,因为内存本身的大小是有限的,所以内存回收是一个较为普遍的机制。而之所以要进行内存回收,主要原因有两个:系统需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态。还有,当有大于空闲内存的申请到来的时候,也会触发内存回收。
而发明人在对相关的内存回收过程的研究发现,相关的内存回收方式中,还缺乏一定的灵活性。例如,以Android操作系统为例。在Android操作系统中,主要存在有两种内存回收机制。一种是基于kswapd进程的回收机制,在这种回收机制中,kswapd进程定期在后台运行。另一种是基于direct reclaim进程的回收机制,在这种回收机制中,directreclaim进程在接收到内存分配需求时,开始进行内存回收。因此,可以发现相关的内存方式的内存回收参数较为固定。
因此,发明人在在研究内存回收的过程中,对表征历史时间窗口内未回收内存与扫描到的内存的比例关系的内存压力进行了研究。发明人提出了本申请中的在不同内存压力对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存压力,然后根据当前的内存压力来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性的内存回收方法、装置以及电子设备。
下面将结合附图具体描述本申请的各实施例。
请参阅图1,本申请实施例提供的一种内存回收方法,所述方法包括:
步骤S110:当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系。
在本申请实施例中,可以有多种方式来检测当前是否处于内存回收场景。
其中,作为一种方式,可以在检测到有负责进行内存回收的进程开始运行时,判定当前进入内存回收场景。例如,若本实施例所运行的环境为Android操作系统中,那么可以在检测到有kswapd进程或者direct reclaim进程运行时,判定当前进入内存回收场景。
可以理解的是,本实施例中的内存压力为表征历史时间窗口内未回收内存与扫描到的内存的比例关系。其中,电子设备在进行内存压力的计算时可以周期性的进行的,而其中的一个周期可以理解为前述的一个时间窗口。需要说明的是,对于内存空间中不同的内存区域的所存储的内容有可能是不同的,而其中不同的内存区域并不一定是在扫描到的时候就可以直接被回收,还有就是并不是只要扫描到的内存都能进行回收。可选的,内存压力可以通过(1-reclaimed/scanned)*100计算得到,其中reclaimed表征未回收内存,scanned表征扫描到的内存。
其中,作为一种方式,时间窗口的长度可以根据实际情况进行调整。
可选的,电子设备可以根据处于运行状态的应用程序的数量来调整时间窗口的长度。需要说明的是,电子设备在运行的过程中会因为处理数据的需要临时再申请分配内存,那么当有较多的应用程序在运行时,相对会有更多的可能申请内存分配,并且也会相对申请分配更多的内存。那么在这种情况下,可选的,电子设备可以定期获取当前处于运行状态的应用程序的数量,将应用程序的数量与多个区间段进行匹配,进而将匹配的区间段所对应的时间长度作为当前的时间窗口的长度。例如,电子设备对于处于运行状态的应用程序的数量配置的区间段包括区间段A、区间段B、区间段C以及区间段D。其中,区间段A对应的时间窗口A,区间段B对应的时间窗口B,区间段C对应的时间窗口C,区间段D对应的时间窗口D。那么若识别当前的运行的应用程序的数量刚好与区间段B匹配,那么电子设备可以将时间窗口B作为当前的时间窗口。
步骤S120:获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低。
可以理解的是,对于不同的内存回收对象因为其本身特性的在被进行回收时所需要消耗的CPU资源是不同的。例如,对于匿名页这种内存回收对象,其在被回收时是需要进行压缩然后存放在RAM中的,所以是需要消耗一定的CPU资源的。所以为了整体提升电子设备的流畅性,在内存压力较大的状态下,就尽量降低再去对CPU资源的占用,进而就降低需要消耗CPU资源的内存回收对象的回收量,从而实现降低内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重。
作为一种方式,在电子设备中预先存储有多个内存压力与对应的内存回收比例之前的映射关系。那么在电子设备获取到内存压力后,可以将获取到的内存压力与前述的多个内存压力进行匹配,进而将与所述获取到内存压力匹配的多个内存压力中匹配的内存压力所对应的内存回收比例作为后续进行内存回收时所采用的内存回收比例。例如,在电子设备中存储的多个内存压力包括有内存压力A、内存压力B、内存压力C、内存压力D。其中,内存压力A对应有内存回收比例0:200,内存压力B对应有内存回收比例40:160,内存压力C对应有内存回收比例80:120,内存压力D对应有内存回收比例200:0。那么在获取到内存压力X后,将内存压力X与前述的内存压力A、内存压力B、内存压力C以及内存压力D进行匹配,若内存压力X与其中的内存压力C匹配,那么对应的内存回收比例为80:120。
需要说明的是,在进行内存压力匹配的时候,为了提升匹配的成功率,允许有一定的匹配误差。例如,若前述的内存压力X与内存压力C之间存在一定的匹配误差,电子设备也可以判定内存压力X与其中的内存压力C匹配。
步骤S130:基于所述内存回收比例进行内存回收。
本申请提供的一种内存回收方法,可以在处于内存回收场景时,获取表征历史时间窗口内未回收内存与扫描到的内存的比例关系的内存压力,然后获取与所述内存压力对应的内存回收比例,基于所述内存回收比例进行内存回收。从而使得在不同内存压力对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存压力,然后根据当前的内存压力来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性。
请参阅图2,本申请实施例提供的一种内存回收方法,所述方法包括:
步骤S210:当处于内存回收场景时,将周期性的历史时间段中距离当前时刻最近的一个的完整的历史时间段作为指定时间段。
步骤S220:获取所述指定时间段对应存储的内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系。
可选的,周期性的时间段中对于每个时间段都会有开始时间以及结束时间。例如,前述的图3所示的多个时间段中,在0到t1时间段,开始时间为0而结束时间为t1,再者,在t2到t3这个时间段中,开始时间为t2,而结束时间为t3。并且,对于每个时间段对应的内存压力所反应的都是各个时间段内的内存压力情况,而在一些情况下,内存压力变化是比较频繁的。如果用前一个时间段的内存压力来计算得到本时间段中的内存分配比例,可以在一定程度上反应实际的内存的使用情况,但是还不能很好的反应当前实时的情况。
针对上述内容,需要先说明的是,在一些时间段中内存压力是很相似的。而相似的内存压力,可能是因为所运行的应用程序比较相似或者相同。例如,请参阅图4,在t1到t2这个时间段中有应用程序A以及应用程序B以及应用程序C在运行,而对应的在t4到t5这个时间段中也有应用程序A以及应用程序B以及应用程序C在运行,那么可以理解的是t4到t5这个时间段为与t1到t2这个时间段相同或者相似的时间段。
那么作为一种方式,所述获取指定时间段内的内存压力的步骤包括:获取当前的应用程序特征参数,所述应用程序特征参数表征应用程序对CPU处理资源的占用程度;基于所述应用程序特征参数计算得到与当前时刻所处的时间段对应的目标历史时间段作为指定时间段;获取存储的所述历史指定时间段内的内存压力。
在这种方式下,可选的,电子设备可以在每个时间段开始时刻以及结束时刻分别计算一次本时间段对应的应用程序特征参数。其中,可以理解的是,在时间段的开始时刻检测到的应用程序可以是对本时间段会有那些应用程序进行运行的一个预估,以便可以更加快速的计算得到相同的目标时间段,而当在时间段的结束时刻是可以明确的确认本时间段实际有那些应用程序在运行的。所以在本时间段计算得到本时间段对应的应用程序特征参数可以用于后续的时间段比对相同的目标时间段,而在每个时间段的开始时刻计算当前的应用程序特征参数,可以用于在当前时间段还未结束之前就可以预估与当前时间段相同的目标时间段,以便可以更加快速即时的获取对应的内存回收比例。
其中,可选的,在计算当前的应用程序特征参数时可以为应用程序当前启动的线程数与CPU可以并行处理的线程的总数,其中应用程序特征参数越高表征对CPU的占用程度越高。例如,当前有应用程序A、应用程序B、应用程序C以及应用程序D在运行,而其中应用程序A对应有a个线程在运行,应用程序B对应有b个线程在运行,应用程序C对应有c个线程在运行,应用程序D对应有d个线程在运行。在CPU可以并行处理的线程的总数为m的情况下,对应的当前的应用程序特征参数为(a+b+c+d)/m。
可选的,在每个时间段结束时刻计算应用程序特征参数时是将当前时间段所有应用程序的平均线程数与CPU可以并行处理的线程的总数的比值。例如,在某个时间段内有应用程序B、应用程序C以及应用程序D在运行,而其中应用程序B运行过t个线程,应用程序C运行过k个线程,应用程序D运行过l个线程。那么该时间段的应用程序特征参数为(t+k+l)/3/m。
可选的,所述基于所述应用程序特征参数计算得到与当前时刻所处的时间段对应的目标历史时间段作为指定时间段的步骤包括:将所述当前的应用程序特征参数与多个历史时间段的应用程序特征参数进行比对;将对应的应用程序特征参数与所述当前的应用程序特征参数相同的历史时间段作为对应的目标历史时间段;将所述目标历史时间段作为指定时间段。
可选的,所述方法还包括:获取每个时间段内运行的应用程序的数量以及优先级,其中,优先级越高所对应的历史运行过程中所占用的内存越高;获取与所述数量对应的第一评分;获取与所述优先级对应的第二评分;基于所述第一评分以及对应的第一预设权重,以及所述第二评分以及对应的第二预设权重计算得到每个时间段对应的应用程序特征参数。
步骤S230:获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低。
再者,需要说明的是,电子设备中有可能会有多种内存回收场景,而对于不同的内存回收场景,所需要回收的内存可能不同的。例如,对于kswapd进程运行时的内存回收场景中,因为kswapd进程是定期在后台运行,那么主要以回收匿名页为主。而对于directreclaim进程运行时的内存回收场景中,因为direct reclaim进程可以在内存分配时运行,那么主要以回收文件页为主。
在本申请实施例中,可以基于多种方式来确认当前的内存回收场景。
作为一种方式,可以识别当前进行内存回收的进程的标识;根据所述标识确定当前的内存回收场景。可以理解的是,在电子设备中进行内存回收都是由特定的进程执行的。例如,前述的有kswapd进程或者direct reclaim进程。那么在这种方式下,可以周期性的检测当前有哪些进程处于运行状态,当检测到有特定的进行内存回收的进程的标识为正在运行的进程标识时,判定处于该标识所对应的内存回收场景。例如,若识别当前进行内存回收的进程的标识为“kswapd”,那么对应的识别当前为kswapd内存回收场景。若识别当前进行内存回收的进程的标识为“direct reclaim”,那么对应的识别当前为direct reclaim内存回收场景。
作为另外一种方式,也可以根据当前所运行的应用程序来确定当前的内存回收场景。
需要说明的是,对于一些应用程序在运行过程中,对于内存消耗是有一定的需求的,那么针对不同的应用程序来确定不同的内存回收场景,可以更好的对应用程序流畅运行带来有利的条件。例如,对于一些应用程序在运行的过程中可能频繁的需要申请内存。例如,对于短视频类的应用程序,可能会增量性的申请内存分配来缓存所请求的短视频。例如,对于即时通信类的应用程序,可能会在运行中检测到进行视频通话时申请分配内存来缓存视频图像数据。再例如,对于一些应用程序本身在启动的时候,就会申请较多的内存。
那么在这种方式下,可选的,当检测到有进行内存回收的进程启动后,会进一步的检测当前有哪些应用程序处于运行状态,然后根据当前处于运行状态的应用程序来确定当前的内存回收场景,以便进而确定内存回收比例。
此外,作为另外一种方式,还可以结合当前处于运行状态的进程标识以及当前处于运行状态的应用程序共同来确定当前的内存回收场景。
如前述内容所示,在本申请实施例中可以有多种方式来确定当前的内存回收场景,而确定的不同的内存回收场景各自对应的内存回收比例是会有所不同的,以便于可以适应不同的场景各自的内存回收需求。示例性的,在实施例中所提及的内存回收对象可以包括匿名页(Anonymous page)以及文件页(File page)。其中,匿名页可以理解为没有文件背景的页,如堆,栈,数据段等,不是以文件形式存在的。文件页可以理解为有文件背景的页,例如,对于文件页所存储的数据可以在磁盘中找到对应的数据。
而其中,对于回收匿名页以及回收文件页的代价是不同的。在回收匿名页的过程中,是将匿名页压缩后存放在RAM中,由于该过程需要使用CPU将匿名页压缩,使用时再解压缩,所以匿名页的回收过程需要消耗一定的CPU时间,相对较慢。对于文件页的回收分两种情况,如果文件页对应的文件内容没有被修改过,则直接将文件页内容丢弃;而如果文件页对应的文件内容被修改了,则将文件内容写回磁盘再将文件页丢弃。对于被回收的文件页的文件内容再次使用时,需要时重新从磁盘读取。额一般而言,很多文件页是没有被修改的,所以回收过程相对较快。
其中,本实施例中主要以检测在前台运行的应用程序为主。以电子设备为Android操作系统,可以通过执行ActivityManager的getRunningTasks方法来获取到当前在前台运行的应用程序的名称。此外,电子设备还可以通过UsageStatsManager来获取用户使用的程序的列表,将该列表中记录的最近使用的应用程序识别为当前的前台应用。再者,还可以通过Android自带无障碍功能,监控窗口焦点的变化,拿到焦点窗口对应包名作为当期在前台运行的应用程序。
下面就主要以匿名页以及文件页作为内存回收对象对本实施例所提供的方法进行介绍。其中,本实施例中的比例可以理解为匿名页与文件页之间的比例。
对于识别当前进行内存回收的进程的标识,然后根据所述标识确定当前的内存回收场景的这种方式中,可以预先配置每种内存回收进程进行内存回收时,对匿名页以及文件页的回收比例,以作为在每种内存回收场景下内存压力所对应的内存回收比例。进而,当检测到有内存回收进程开始运行时,对应的获取该内存回收进程的标识,然后按照该内存回收进程的标识查询对应的匿名页以及文件页的回收比例,以作为当前内存回收场景的内存压力所对应的内存回收比例。
标识 比例
direct reclaim 0:200
kswapd 200:0
如上表所示,标识“direct reclaim”对应的比例为“0:200”,表征仅回收文件页,而不回收匿名页。标识“kswapd”对应的比例为“200:0”,表征仅回收匿名页,而不回收文件页。当然,其中的比例还可以根据需要进行改变,例如,对于标识为“direct reclaim”的进程对应的比例还可以为50:150,以表征尽量回收文件页,且少量回收匿名页。
再者,在根据当前所运行的应用程序来确定当前的内存回收场景的这种方式中,可以预先建立应用程序与内存回收比例的对应关系。进而在检测到有内存回收进程开始运行后,获取当前正在运行的应用程序,然后查询该正在运行的应用程序对应的比例作为当前内存回收场景的内存回收比例。
应用程序标识 比例
应用程序A 10:190
应用程序B 20:180
应用程序C 30:170
如上表所示,每个应用程序标识都各自对应有一个内存回收比例。其中文件页比重越高,表征越需要更快的内存回收效率。那么在检测到有进行内存回收的进程开始运行后,如果检测到当前有应用程序A在运行,那么就对应的,将应用程序A对应的比例“10:190”作为内存回收比例。如果检测到当前有应用程序B在运行,那么就对应的,将应用程序B对应的比例“20:180”作为内存回收比例。
需要说明的是,在一种方式中,可以结合进程本身对应的比例以及当前处于运行状态的应用程序的比例共同确定当前场景对应的比例。例如,在前述表中进程标识“directreclaim”对应的比例为“0:200”,而若检测到应用程序A当前处于运行状态时,该应用程序A对应的比例为“10:190”,那么当同时检测到进程“direct reclaim”处于运行状态,且检测到应用程序A在运行时,可以将处于运行状态的应用程序对应的比例与当前处于运行状态的负载内存回收的进程的标识对应的比例取均值作为当前内存回收场景的内存回收比例,从而使得既可以在一定程度上满足进程对应的内存回收比例,也能够在一定程度上满足应用程序对于内存回收比例的需求。例如,在前述表中进程标识“direct reclaim”对应的比例为“0:200”,而该应用程序A对应的比例为“10:190”,那么取均值后得到的比例为5:195。
可以理解的是,并不一定是任一一个应用程序都会对应一个比例。而可以只是被特定标记的应用程序会对应有一个比例。可选的,在电子设备中,可以通过建立名单的方式来对特定的应用程序进行标记。那么在这种方式下,为了便于可以快速对当前的应用程序是否为前述特定的应用程序(配置有内存回收比例的应用程序)进行判断,可选的,当有特定的应用程序启动以后,生成一个伴随文件,在该伴随文件中写入当前正在运行的特定的应用程序的标识。那么在这种方式下,当检测到有负责内存回收的进程启动以后,可以查询是否有伴随文件生成,若有,则将伴随文件中记录的应用程序对应的内存回收比例与当前启动的负责内存回收的进程对应的内存回收比例进行结合(例如,前述的取平均)来得到当前内存回收场景对应的内存回收比例。而若检测到没有伴随文件存在,则直接按照负责内存回收的进程对应的内存回收比例作为当前内存回收场景对应的内存回收比例。
需要说明的是,对于通过检测应用程序来判定当前内存回收场景的方式中。还可以通过预判即将有哪些应用程序即将启动来确定当前的内存回收场景。例如,在一种方式中,电子设备的某些应用程序是定时启动的,例如,闹钟程序。或者有的应用程序会因为用户的使用习惯而在每天的某个时间段内惯例性的启动。例如,外卖类的应用程序,可能会在每天接近饭点的时候惯例性启动,再或者视频类的应用程序可能会在用户每天坐地铁的时候惯例性的被用户启动。
作为一种方式,所述获取与所述内存压力对应的内存回收比例的步骤包括:
获取表征多个预设内存压力与各自对应的内存回收比例之间的映射关系;按照指定的顺序将所述内存压力与所述多个预设内存压力进行匹配;将与所述内存压力匹配的预设内存压力所对应的内存回收比例,作为与所述内存压力对应的内存回收比例。
步骤S240:基于所述内存回收比例进行内存回收。
本申请提供的一种内存回收方法,可以在处于内存回收场景时,获取表征历史时间窗口内未回收内存与扫描到的内存的比例关系的内存压力,其中该内存压力为周期性的历史时间段中距离当前时刻最近的一个的完整的历史时间段内的内存压力,然后获取与所述内存压力对应的内存回收比例,基于所述内存回收比例进行内存回收。从而使得在不同内存压力对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存压力,然后根据当前的内存压力来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性。
请参阅图5,本申请实施例提供的一种内存回收方法,所述方法包括:
步骤S310:当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系。
步骤S320:获取与所述内存压力对应的预配置的内存回收比例。
步骤S330:获取预先计算的比例修正参数,所述比例修正参数表征所述未回收内存的回收难度。
步骤S340:基于所述比例修正参数对所述预配置的内存回收比例进行更新,得到所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低。
作为一种方式,所述基于所述比例修正参数对所述预配置的内存回收比例进行更新,得到所述内存压力对应的内存回收比例的步骤包括:若所述比例修正参数表征未回收内存用于承载文件系统(可以理解的是,因为文件系统需要进行文件的读取,所以在内存回收过程中用于承载文件系统内存是无法进行回收的),降低所述预配置的内存回收比例中需要消耗CPU资源的内存回收对象的比重,得到所述内存压力对应的内存回收比例;若所述比例修正参数表征所述未回收内存用于数据存储,将所述预配置的内存回收比例作为述内存压力对应的内存回收比例。
步骤S350:基于所述内存回收比例进行内存回收。
本申请提供的一种内存回收方法,可以在处于内存回收场景时,获取表征历史时间窗口内未回收内存与扫描到的内存的比例关系的内存压力,然后获取与所述内存压力对应的内存回收比例,基于所述内存回收比例进行内存回收。从而使得在不同内存压力对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存压力,然后根据当前的内存压力来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性。并且,在本实施例中,根据内存压力获取的内存回收比例为预配置的内存回收比例,在获取到预配置的内存回收比例后,会进一步的根据当前表征所述未回收内存的回收难度的比例修正参数对该预配置的内存回收比例进行更新得到与该内存压力实际对应的内存回收比例。
请参阅图6,本申请实施例提供的一种内存回收方法,所述方法包括:
步骤S410:当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系;
步骤S420:获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低;
步骤S430:基于所述内存回收比例进行内存回收。
步骤S440:获取当前的内存回收场景所对应的内存回收目标;
步骤S450:基于所述内存回收比例确定多种内存回收对象各自对应的内存回收目标;
步骤S460:若存在单个内存回收对象对应的内存回收目标,大于所述单个内存回收对象当前可回收的内存量,获取内存差值,所述内存差值为所述单个内存回收对象对应的内存回收目标与所述当前可回收的内存量的差值。
可以理解的是,对于多种内存回收对象可以回收到的内存量是有一定限制的。例如,若当前内存中匿名页一共有200MB,那么最多回收到的匿名页的数据量也只有200MB。那么在这种情况下,若既配置有内存回收目标,且需要按照当前的内存回收场景进行内存回收,那么就可能会造成无法回收到语气的内存量。
那么在这种方式下,在以当前的内存回收场景对应的内存回收比例完成内存回收后,获取按照当前的内存回收场景所对应的内存回收目标,未完成内存回收目标的对象为待处理内存回收对象。进而计算该待处理内存回收对象对应的内存回收目标与所述当前可回收的内存量的差值,作为前述的内存差值,然后从其他内存回收对象中再进一步回收该内存差值对应的内存量,以便既可以按照既定的内存回收比例来执行内存回收,也可以完成既定的内存回收目标。
步骤S470:增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标,以满足所述当前的内存回收场景所对应的内存回收目标。
示例性的,以匿名页和文件页为例,内存回收比例为50:150,且内存回收目标为100MB。那么可以理解的是,匿名页需要回收25MB,而文件页需要回收75MB。但是,匿名页当前可以回收的量只有15MB。因此,在按照比例进行回收之后实际只回收了75MB+15MB=90MB,那么可以理解的是,按照前述的内存差值计算规则,得到内存差值为25-15=10MB,那么对应的,会再回收10MB的文件页作为补充。
需要说明的是,根据前述的内存回收原则,配置多种内存回收方式主要是为了提升内存回收效率。而对于多个内存回收对象而言,不同的内存回收对象的回收代价是不同的。那么如果增加的反而是内存回收效率更低的内存回收对象的回收量,可能不利于整体提升回收效率。那么作为一种方式,所述多种内存回收对象包括匿名页以及文件页,所述增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标的步骤之前还包括:若增加内存回收目标的内存回收对象为文件页;执行所述增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标;若增加内存回收目标的内存回收对象为匿名页;不增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标。从而通过这种方式,可以在整体上提升内存回收效率。
作为一种方式,所述多种内存回收对象包括匿名页以及文件页,所述增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标的步骤之前还包括:若增加内存回收目标的内存回收对象为文件页;执行所述增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标;若增加内存回收目标的内存回收对象为匿名页;不增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标。
请参阅图7,本申请实施例提供的一种内存回收装置500,所述装置500包括:
内存压力获取单元510,用于当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系。
作为一种方式,内存压力获取单元510,具体用于将周期性的历史时间段中距离当前时刻最近的一个的完整的历史时间段作为指定时间段;获取所述指定时间段对应存储的内存压力。
其中,可选的,内存压力获取单元510,具体用于获取表征多个预设内存压力与各自对应的内存回收比例之间的映射关系;按照指定的顺序将所述内存压力与所述多个预设内存压力进行匹配;将与所述内存压力匹配的预设内存压力所对应的内存回收比例,作为与所述内存压力对应的内存回收比例。
回收参数获取单元520,用于获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低。
作为一种方式,回收参数获取单元520,具体用于获取与所述内存压力对应的预配置的内存回收比例;获取预先计算的比例修正参数,所述比例修正参数表征所述未回收内存的回收难度;基于所述比例修正参数对所述预配置的内存回收比例进行更新,得到所述内存压力对应的内存回收比例。
其中,可选的,回收参数获取单元520,具体用于若所述比例修正参数表征未回收内存用于承载文件系统,降低所述预配置的内存回收比例中需要消耗CPU资源的内存回收对象的比重,得到所述内存压力对应的内存回收比例;若所述比例修正参数表征所述未回收内存用于数据存储,将所述预配置的内存回收比例作为述内存压力对应的内存回收比例。
内存回收单元530,用于基于所述内存回收比例进行内存回收。
请参阅图8所示,所述装置500,还包括:
内存增量回收单元540,用于获取当前的内存回收场景所对应的内存回收目标;基于所述内存回收比例确定多种内存回收对象各自对应的内存回收目标;若存在单个内存回收对象对应的内存回收目标,大于所述单个内存回收对象当前可回收的内存量,获取内存差值,所述内存差值为所述单个内存回收对象对应的内存回收目标与所述当前可回收的内存量的差值;增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标,以满足所述当前的内存回收场景所对应的内存回收目标。
可选的,所述多种内存回收对象包括匿名页以及文件页。内存增量回收单元540,还用于若增加内存回收目标的内存回收对象为文件页;执行所述增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标;若增加内存回收目标的内存回收对象为匿名页;不增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标。
需要说明的是,本申请中装置实施例与前述方法实施例是相互对应的,装置实施例中具体的原理可以参见前述方法实施例中的内容,此处不再赘述。
下面将结合图9对本申请提供的一种电子设备进行说明。
请参阅图9,基于上述的内存回收方法、装置,本申请实施例还提供的另一种可以执行前述内存回收方法的电子设备100。电子设备100包括相互耦合的一个或多个(图中仅示出一个)处理器102、存储器104以及网络模块106。其中,该存储器104中存储有可以执行前述实施例中内容的程序,而处理器102可以执行该存储器104中存储的程序。
其中,处理器102可以包括一个或者多个处理核。处理器102利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器104内的指令、程序、代码集或指令集,以及调用存储在存储器104内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器102可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器102可集成中央处理器(CentralProcessing 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可以与基站进行信息交互。
请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
本申请提供的一种内存回收方法、装置以及电子设备,可以在处于内存回收场景时,获取表征历史时间窗口内未回收内存与扫描到的内存的比例关系的内存压力,然后获取与所述内存压力对应的内存回收比例,基于所述内存回收比例进行内存回收。从而使得在不同内存压力对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存压力,然后根据当前的内存压力来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种内存回收方法,其特征在于,所述方法包括:
当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系;
获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低;
基于所述内存回收比例进行内存回收。
2.根据权利要求1所述的方法,其特征在于,所述获取内存压力的步骤包括:
将周期性的历史时间段中距离当前时刻最近的一个的完整的历史时间段作为指定时间段;
获取所述指定时间段对应存储的内存压力。
3.根据权利要求2所述的方法,其特征在于,所述获取与所述内存压力对应的内存回收比例的步骤包括:
获取表征多个预设内存压力与各自对应的内存回收比例之间的映射关系;
按照指定的顺序将所述内存压力与所述多个预设内存压力进行匹配;
将与所述内存压力匹配的预设内存压力所对应的内存回收比例,作为与所述内存压力对应的内存回收比例。
4.根据权利要求1所述的方法,其特征在于,所述获取与所述内存压力对应的内存回收比例的步骤包括:
获取与所述内存压力对应的预配置的内存回收比例;
获取预先计算的比例修正参数,所述比例修正参数表征所述未回收内存的回收难度;
基于所述比例修正参数对所述预配置的内存回收比例进行更新,得到所述内存压力对应的内存回收比例。
5.根据权利要求4所述的方法,其特征在于,所述基于所述比例修正参数对所述预配置的内存回收比例进行更新,得到所述内存压力对应的内存回收比例的步骤包括:
若所述比例修正参数表征未回收内存用于承载文件系统,降低所述预配置的内存回收比例中需要消耗CPU资源的内存回收对象的比重,得到所述内存压力对应的内存回收比例;
若所述比例修正参数表征所述未回收内存用于数据存储,将所述预配置的内存回收比例作为述内存压力对应的内存回收比例。
6.根据权利要求1所述的方法,其特征在于,所述基于所述内存回收比例进行内存回收的步骤之后还包括:
获取当前的内存回收场景所对应的内存回收目标;
基于所述内存回收比例确定多种内存回收对象各自对应的内存回收目标;
若存在单个内存回收对象对应的内存回收目标,大于所述单个内存回收对象当前可回收的内存量,获取内存差值,所述内存差值为所述单个内存回收对象对应的内存回收目标与所述当前可回收的内存量的差值;
增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标,以满足所述当前的内存回收场景所对应的内存回收目标。
7.根据权利要求6所述的方法,其特征在于,所述多种内存回收对象包括匿名页以及文件页,所述增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标的步骤之前还包括:
若增加内存回收目标的内存回收对象为文件页;
执行所述增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标;
若增加内存回收目标的内存回收对象为匿名页;
不增加所述单个内存回收对象以外的内存回收对象对应的内存回收目标。
8.一种内存回收装置,其特征在于,所述装置包括:
内存压力获取单元,用于当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系;
回收参数获取单元,用于获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低;
内存回收单元,用于基于所述内存回收比例进行内存回收。
9.一种电子设备,其特征在于,包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行权利要求1-7任一所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行权利要求1-7任一所述的方法。
CN201910927294.5A 2019-09-27 2019-09-27 内存回收方法、装置以及电子设备 Pending CN110727606A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910927294.5A CN110727606A (zh) 2019-09-27 2019-09-27 内存回收方法、装置以及电子设备
EP20868443.1A EP3979082A4 (en) 2019-09-27 2020-09-18 METHOD AND APPARATUS FOR RECOVERING MEMORY, ELECTRONIC DEVICE AND STORAGE MEDIA
PCT/CN2020/116212 WO2021057619A1 (zh) 2019-09-27 2020-09-18 内存回收方法、装置、电子设备及存储介质
US17/564,794 US20220121495A1 (en) 2019-09-27 2021-12-29 Memory reclamation method, electronic device and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910927294.5A CN110727606A (zh) 2019-09-27 2019-09-27 内存回收方法、装置以及电子设备

Publications (1)

Publication Number Publication Date
CN110727606A true CN110727606A (zh) 2020-01-24

Family

ID=69218568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910927294.5A Pending CN110727606A (zh) 2019-09-27 2019-09-27 内存回收方法、装置以及电子设备

Country Status (4)

Country Link
US (1) US20220121495A1 (zh)
EP (1) EP3979082A4 (zh)
CN (1) CN110727606A (zh)
WO (1) WO2021057619A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930513A (zh) * 2020-08-31 2020-11-13 Oppo(重庆)智能科技有限公司 文件预读的调整方法、装置、电子设备及存储介质
CN112199618A (zh) * 2020-10-22 2021-01-08 Oppo广东移动通信有限公司 文件页面预读方法、装置、终端及存储介质
WO2021057619A1 (zh) * 2019-09-27 2021-04-01 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质
WO2021057623A1 (zh) * 2019-09-27 2021-04-01 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质
CN114168065A (zh) * 2020-09-10 2022-03-11 荣耀终端有限公司 调整内存配置参数的方法和装置
CN116126744A (zh) * 2023-04-04 2023-05-16 荣耀终端有限公司 一种内存回收方法、装置及终端设备
CN116185890A (zh) * 2023-04-23 2023-05-30 荣耀终端有限公司 内存回收方法及电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114253872B (zh) * 2022-02-28 2022-07-12 荣耀终端有限公司 电子设备及其内存回收方法、介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231619A (zh) * 2008-02-22 2008-07-30 浙江大学 一种基于非连续页的动态内存管理方法
US20150286564A1 (en) * 2014-04-08 2015-10-08 Samsung Electronics Co., Ltd. Hardware-based memory management apparatus and memory management method thereof
CN105511963A (zh) * 2015-11-30 2016-04-20 Tcl集团股份有限公司 一种基于Android系统的内存优化方法及系统
CN109697119A (zh) * 2017-10-20 2019-04-30 中兴通讯股份有限公司 终端内存回收处理方法及装置
CN109857555A (zh) * 2019-01-15 2019-06-07 Oppo广东移动通信有限公司 内存回收方法及装置、存储介质和电子设备
CN109992393A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 应用处理方法和装置、电子设备、计算机可读存储介质
CN109992523A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN110018902A (zh) * 2018-01-10 2019-07-16 广东欧珀移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN110083450A (zh) * 2019-04-09 2019-08-02 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150067238A1 (en) * 2013-08-29 2015-03-05 Sandisk Technologies Inc. Computing Device and Method for Predicting Low Memory Conditions
CN105701025B (zh) * 2015-12-31 2019-07-23 华为技术有限公司 一种内存回收方法及装置
US10635337B2 (en) * 2016-06-27 2020-04-28 Intel Corporation Dynamic configuration of compressed virtual memory
CN108228342B (zh) * 2017-08-10 2021-02-09 珠海市魅族科技有限公司 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN110018901B (zh) * 2018-01-10 2021-08-03 Oppo广东移动通信有限公司 内存回收方法、装置、计算机设备和计算机可读存储介质
CN108563506A (zh) * 2018-04-11 2018-09-21 青岛海信移动通信技术股份有限公司 移动终端的内存回收方法及装置
CN109857556B (zh) * 2019-01-15 2021-01-08 Oppo广东移动通信有限公司 内存回收方法及装置、存储介质和电子设备
CN110727605B (zh) * 2019-09-27 2022-06-21 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110704189A (zh) * 2019-09-27 2020-01-17 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110727606A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231619A (zh) * 2008-02-22 2008-07-30 浙江大学 一种基于非连续页的动态内存管理方法
US20150286564A1 (en) * 2014-04-08 2015-10-08 Samsung Electronics Co., Ltd. Hardware-based memory management apparatus and memory management method thereof
CN105511963A (zh) * 2015-11-30 2016-04-20 Tcl集团股份有限公司 一种基于Android系统的内存优化方法及系统
CN109697119A (zh) * 2017-10-20 2019-04-30 中兴通讯股份有限公司 终端内存回收处理方法及装置
CN109992393A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 应用处理方法和装置、电子设备、计算机可读存储介质
CN109992523A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN110018902A (zh) * 2018-01-10 2019-07-16 广东欧珀移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN109857555A (zh) * 2019-01-15 2019-06-07 Oppo广东移动通信有限公司 内存回收方法及装置、存储介质和电子设备
CN110083450A (zh) * 2019-04-09 2019-08-02 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PIPCI: "Linux swap 深度解读", 《HTTPS://WWW.CNBLOGS.COM/PIPCI/P/11398865.HTML》 *
李守龙: "分代算法在KVM中的实现", 《计算机工程》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021057619A1 (zh) * 2019-09-27 2021-04-01 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质
WO2021057623A1 (zh) * 2019-09-27 2021-04-01 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质
CN111930513A (zh) * 2020-08-31 2020-11-13 Oppo(重庆)智能科技有限公司 文件预读的调整方法、装置、电子设备及存储介质
CN111930513B (zh) * 2020-08-31 2023-02-28 Oppo(重庆)智能科技有限公司 文件预读的调整方法、装置、电子设备及存储介质
CN114168065A (zh) * 2020-09-10 2022-03-11 荣耀终端有限公司 调整内存配置参数的方法和装置
WO2022052897A1 (zh) * 2020-09-10 2022-03-17 荣耀终端有限公司 调整内存配置参数的方法和装置
CN112199618A (zh) * 2020-10-22 2021-01-08 Oppo广东移动通信有限公司 文件页面预读方法、装置、终端及存储介质
CN116126744A (zh) * 2023-04-04 2023-05-16 荣耀终端有限公司 一种内存回收方法、装置及终端设备
CN116126744B (zh) * 2023-04-04 2023-08-22 荣耀终端有限公司 一种内存回收方法、装置及终端设备
CN116185890A (zh) * 2023-04-23 2023-05-30 荣耀终端有限公司 内存回收方法及电子设备
CN116185890B (zh) * 2023-04-23 2023-09-19 荣耀终端有限公司 内存回收方法及电子设备

Also Published As

Publication number Publication date
EP3979082A4 (en) 2022-08-17
WO2021057619A1 (zh) 2021-04-01
US20220121495A1 (en) 2022-04-21
EP3979082A1 (en) 2022-04-06

Similar Documents

Publication Publication Date Title
CN110727606A (zh) 内存回收方法、装置以及电子设备
CN110727607B (zh) 内存回收方法、装置以及电子设备
CN110764906B (zh) 内存回收处理方法、装置、电子设备以及存储介质
CN111352861B (zh) 内存压缩方法、装置及电子设备
CN110888746B (zh) 内存管理方法、装置、存储介质及电子设备
CN110704189A (zh) 内存回收方法、装置以及电子设备
CN110446062B (zh) 大数据文件传输的接收处理方法、电子装置及存储介质
CN110765031B (zh) 数据存储方法、装置、移动终端及存储介质
CN110018902B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN111984413A (zh) 内存回收方法、装置、电子设备及存储介质
CN111124173A (zh) 触摸屏的工作状态切换方法、装置、移动终端及存储介质
CN111274039A (zh) 内存回收方法、装置、存储介质及电子设备
CN112764925A (zh) 基于虚拟内存的数据存储方法、装置、设备及存储介质
CN110727605B (zh) 内存回收方法、装置以及电子设备
CN115421909A (zh) 内存管理方法、装置、电子设备及存储介质
CN103425539B (zh) 信息处理方法及装置
CN110022341B (zh) 一种数据传输方法及相关设备
CN115587049A (zh) 内存回收方法、装置、电子设备及存储介质
CN112052089B (zh) 内存回收方法、装置以及电子设备
CN115421907A (zh) 内存回收方法、装置、电子设备及存储介质
CN110866201A (zh) 缓存处理方法、装置、计算机设备以及存储介质
CN111708715B (zh) 内存分配方法、内存分配装置及终端设备
CN111078405B (zh) 内存分配方法、装置、存储介质及电子设备
CN112070144A (zh) 图像聚类方法、装置、电子设备以及存储介质
CN112684878B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200806

Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

Address before: 401120 No. 188 Yulong Avenue, Yufengshan Town, Yubei District, Chongqing

Applicant before: OPPO (CHONGQING) INTELLIGENT TECHNOLOGY Co.,Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200124