内存回收方法、装置以及电子设备制造方法及图纸

技术编号:23190815 阅读:19 留言:0更新日期:2020-01-24 16:14
本申请实施例公开了一种内存回收方法、装置以及电子设备。所述方法包括:获取当前的内存回收场景;获取与所述内存回收场景对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,不同种类的所述内存回收对象的回收代价不同,且不同内存回收场景对应的内存回收比例不同;基于所述内存回收比例进行内存回收。从而使得在不同内存回收场景对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存回收场景,然后根据当前的内存回收场景来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性。

【技术实现步骤摘要】
内存回收方法、装置以及电子设备
本申请涉及计算机
,更具体地,涉及一种内存回收方法、装置以及电子设备。
技术介绍
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。电子设备中的内存的空间是有限的,为了保证系统有足够的内存可以使用,电子设备的系统通常会在一定的情况下进行内存回收。但是,在相关的内存回收方式中,还缺乏一定的灵活性。
技术实现思路
鉴于上述问题,本申请提出了一种内存回收方法、装置以及电子设备,以改善上述问题。第一方面,本申请提供了一种内存回收方法,所述方法包括:获取当前的内存回收场景;获取与所述内存回收场景对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,不同种类的所述内存回收对象的回收代价不同;基于所述内存回收比例进行内存回收。第二方面,本申请提供了一种内存回收装置,所述装置包括:场景获取单元,用于获取当前的内存回收场景;回收参数获取单元,用于获取与所述内存回收场景对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,不同种类的所述内存回收对象的回收代价不同;回收单元,用于基于所述内存回收比例进行内存回收。第三方面,本申请提供了一种电子设备,包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行以实现上述的方法。第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行上述的方法。本申请提供的一种内存回收方法、装置以及电子设备,先获取当前的内存回收场景,然后获取与所述内存回收场景对应的表征多种内存回收对象之间的比例内存回收比例,在不同种类的所述内存回收对象的回收代价不同的情况下,基于所述内存回收比例进行内存回收。从而使得在不同内存回收场景对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存回收场景,然后根据当前的内存回收场景来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出了本申请一实施例提出的一种内存回收方法的流程图;图2示出了本申请另一实施例提出的一种内存回收方法的流程图;图3示出了本申请再一实施例提出的一种内存回收方法的流程图;图4示出了本申请实施例提出的一种内存回收装置的结构框图;图5示出了本申请再一实施例提出的一种内存回收装置的结构框图;图6示出了本申请另一实施例提出的一种内存回收装置的结构框图;图7示出了本申请实时中的用于执行根据本申请实施例的内存回收方法的电子设备的结构框图;图8示出了本申请实时中的用于保存或者携带实现根据本申请实施例的内存回收方法的程序代码的存储单元。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。对于操作系统而言,因为内存本身的大小是有限的,所以内存回收是一个较为普遍的机制。而之所以要进行内存回收,主要原因有两个:系统需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态。还有,当有大于空闲内存的申请到来的时候,也会触发内存回收。而专利技术人在对相关的内存回收过程的研究发现,相关的内存回收方式中,还缺乏一定的灵活性。例如,以Android操作系统为例。在Android操作系统中,主要存在有两种内存回收机制。一种是基于kswapd进程的回收机制,在这种回收机制中,kswapd进程定期在后台运行。另一种是基于directreclaim进程的回收机制,在这种回收机制中,directreclaim进程在接收到内存分配需求时,开始进行内存回收。因此,可以发现相关的内存方式的内存回收参数较为固定。因此,专利技术人提出了本申请中的在不同内存回收场景对应的内存回收比例不同的情况下,可以在内存回收开始时先获取当前的内存回收场景,然后根据当前的内存回收场景来确定对于多种内存回收对象该各自回收多少,进而提升了内存回收过程的灵活性的内存回收方法、装置以及电子设备。下面将结合附图具体描述本申请的各实施例。请参阅图1,本申请实施例提供的一种内存回收方法,所述方法包括:步骤S110:获取当前的内存回收场景。可以理解的是,在本申请实施例中,会在开始进行内存回收时开始获取当前的内存回收场景。其中,作为一种方式,可以在检测到有负责进行内存回收的进程开始运行时,判定当前开始进行内存回收。例如,若本实施例所运行的环境为Android操作系统中,那么可以在检测到有kswapd进程或者directreclaim进程运行时,判定当前开始进行内存回收。在本申请实施例中,可以基于多种方式来确认当前的内存回收场景。作为一种方式,可以识别当前进行内存回收的进程的标识;根据所述标识确定当前的内存回收场景。可以理解的是,在电子设备中进行内存回收都是由特定的进程执行的。例如,前述的有kswapd进程或者directreclaim进程。那么在这种方式下,可以周期性的检测当前有哪些进程处于运行状态,当检测到有特定的进行内存回收的进程的标识为正在运行的进程标识时,判定处于该标识所对应的内存回收场景。例如,若识别当前进行内存回收的进程的标识为“kswapd”,那么对应的识别当前为kswapd内存回收场景。若识别当前进行内存回收的进程的标识为“directreclaim”,那么对应的识别当前为directreclaim内存回收场景。作为另外一种方式,也可以根据当前所运行的应用程序来确定当前的内存回收场景。需要说明的是,对于一些应用程序在运行过程中,对于内存消耗是有一定的需求的,那么针对不同的应用程序来确定不同的内存回收场景,可以更好的对应用程序流畅运行带来有利的条件。例如,对于一些应用程序在运行的过程中可能频繁的需要申请内存。例如,对于短视频类的应用程序,可能会增量性的申请内存分配来缓存所请求的短视频。例如,对于即时通信类的应用程序,可能会在运行中检测到进行视频通话时申请分配内存来缓存视频图像数据。再例如,对于一些应用程序本身在启动的时候,就会申请较多的内存。那么在这种方式下,可选的,当检测到有进行内存回收的进程启动后,会进一步的检测当前有哪些应用程序处于运行状态,然后根据当前处于运行状态的应用程序来确定当前的内存回收场景,以便进而确定内存回收比例。此外,作为另外一种方式,本文档来自技高网...

【技术保护点】
1.一种内存回收方法,其特征在于,所述方法包括:/n获取当前的内存回收场景;/n获取与所述内存回收场景对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,不同种类的所述内存回收对象的回收代价不同,且不同内存回收场景对应的内存回收比例不同;/n基于所述内存回收比例进行内存回收。/n

【技术特征摘要】
1.一种内存回收方法,其特征在于,所述方法包括:
获取当前的内存回收场景;
获取与所述内存回收场景对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,不同种类的所述内存回收对象的回收代价不同,且不同内存回收场景对应的内存回收比例不同;
基于所述内存回收比例进行内存回收。


2.根据权利要求1所述的方法,其特征在于,所述获取与所述内存回收场景对应的内存回收比例的步骤包括:
获取所述内存回收场景对应的初始内存回收比例;
检测当前处于运行状态的应用程序;
基于所述当前处于运行状态的应用程序,对所述初始内存回收比例进行更新得到所述内存回收场景对应的内存回收比例。


3.根据权利要求2所述的方法,其特征在于,所述基于所述当前处于运行状态的应用程序,对所述初始内存回收比例进行更新得到所述内存回收场景对应的内存回收比例的步骤包括:
获取当前处于前台运行状态的应用程序的优先级;
获取与所述优先级对应的内存回收比例,其中,优先级越高所对应的内存回收比例中第一目标内存回收对象所占比重越高,其中,第一目标内存回收对象的回收效率高于其他类型内存回收对象的回收效率;
将所述优先级对应的内存回收比例作为所述内存回收场景对应的内存回收比例。


4.根据权利要求3所述的方法,其特征在于,所述获取当前处于前台运行状态的应用程序的优先级的步骤之前还包括:
获取当前处于前台运行状态的应用程序在指定时间段内的历史内存消耗值;
若所述历史内存消耗值不小于目标值,执行所述获取当前处于前台运行状态的应用程序的优先级;
若所述历史内存消耗值小于目标值,将所述内存回收场景对应的初始内存回收比例作为所述内存回收场景对应的内存回收比例。


5.根据权利要求2所述的方法,其特征在于,所述基于所述当前处于运行状态的应用程序,对所述初始内存回收比例进行更新得到所述内存回收场景对应的内存回收比例的步骤包括:
获取当前处理运行状态的应用程序的数量;
获取与所述数量应的内存回收比例,其中,所述数量越多所对应的内存回收比例中第一目标内存回收对象所占比重越高,其中,第一目标内存回收对象的回收效率高于其他类型内存回收对象的回收效率;
将所述优先...

【专利技术属性】
技术研发人员:周华材张诗明
申请(专利权)人:OPPO重庆智能科技有限公司
类型:发明
国别省市:重庆;50

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1