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

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

Memory recovery methods, devices and electronic equipment

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

【技术保护点】
1.一种内存回收方法,其特征在于,所述方法包括:/n当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系;/n获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低;/n基于所述内存回收比例进行内存回收。/n

【技术特征摘要】
1.一种内存回收方法,其特征在于,所述方法包括:
当处于内存回收场景时,获取内存压力,所述内存压力表征历史时间窗口内未回收内存与扫描到的内存的比例关系;
获取与所述内存压力对应的内存回收比例,所述内存回收比例表征多种内存回收对象之间的比例,其中,所述内存压力越高所对应的内存回收比例中回收时需要消耗CPU资源的内存回收对象的比重越低;
基于所述内存回收比例进行内存回收。


2.根据权利要求1所述的方法,其特征在于,所述获取内存压力的步骤包括:
将周期性的历史时间段中距离当前时刻最近的一个的完整的历史时间段作为指定时间段;
获取所述指定时间段对应存储的内存压力。


3.根据权利要求2所述的方法,其特征在于,所述获取与所述内存压力对应的内存回收比例的步骤包括:
获取表征多个预设内存压力与各自对应的内存回收比例之间的映射关系;
按照指定的顺序将所述内存压力与所述多个预设内存压力进行匹配;
将与所述内存压力匹配的预设内存压力所对应的内存回收比例,作为与所述内存压力对应的内存回收比例。


4.根据权利要求1所述的方法,其特征在于,所述获取与所述内存压力对应的内存回收比例的步骤包括:
获取与所述内存压力对应的预配置的内存回收比例;
获取预先计算的比例修正参数,所述比例修正参数表征所述未回收内存的回收难度;
基于所述比例修正参数对所述预配置的内存回收比例进行更新,得到所述内存压力对应的内存回收比例。


5.根据权利要求4所述的方法,其特征在于,所述基于所述比例修正参数对所述预配置的内存回收比例进行更新,得到所述内存压力对应的内存回收比例的步骤包括:
若所述比例修正参数表征未回收内存用于承载文件系统,降低所述预配置的内存回收比例中需要消耗CPU资源的内存回收对象的比重,得到所述内存压力对应的内存回收比例;
若所述比例修正参数表征所述未回收内存用于数据存储,将所述预配置的内存回收比例作为述内存压力对应的内存回收比例。


...

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

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

1