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

技术编号:36073091 阅读:12 留言:0更新日期:2022-12-24 10:43
本申请实施例提供一种内存回收方法、装置、电子设备及存储介质,涉及数据处理技术领域。该方法通过获取目标中央处理器的内存页面池的当前存量;若当前存量大于或等于存量阈值,根据目标进程的调度优先级,调整内存页面池的内存回收线程的调度优先级;根据调整之后的内存回收线程的调度优先级,对内存页面池进行内存回收,从而可以提升内存回收速度和内存回收的合理性。回收的合理性。回收的合理性。

【技术实现步骤摘要】
内存回收方法、装置、电子设备及存储介质


[0001]本申请实施例涉及数据处理
,特别地,涉及一种内存回收方法、装置、电子设备及存储介质。

技术介绍

[0002]随着移动终端技术的发展,移动终端可以实现的功能越来越多,导致移动终端对内存性能的要求越来越高。内存回收环节是内存性能管理中的重要环节。然而,目前的内存回收方式通常是Linux系统中的伙伴系统通过对中央处理器进行分阶来对内存进行回收管理。具体地,伙伴系统为每个中央处理器开启一个后台线程,通过遍历所有的中央处理器,对各个中央处理器的内存页面池进行内存回收,若实时进程进入内存回收过程,则需要等待所有中央处理器的内存回收完毕才能执行,导致目前的内存回收方式不合理。

技术实现思路

[0003]本申请实施例提供一种内存回收方法、装置、电子设备及存储介质,以改善上述问题。
[0004]第一方面,本申请实施例提供一种内存回收方法。该方法包括:获取目标中央处理器的内存页面池的当前存量;若所述当前存量大于或等于存量阈值,根据目标进程的调度优先级,调整所述内存页面池的内存回收线程的调度优先级,其中,所述内存页面池的内存回收线程由所述目标进程发起;根据调整之后的所述内存回收线程的调度优先级,对所述内存页面池进行内存回收。
[0005]第二方面,本申请实施例提供一种内存回收装置。该装置包括:数据获取模块,用于获取目标中央处理器的内存页面池的当前存量;优先级调整模块,用于若所述当前存量大于或等于存量阈值,根据目标进程的调度优先级,调整所述内存页面池的内存回收线程的调度优先级,其中,所述内存页面池的内存回收线程由所述目标进程发起;内存回收模块,用于根据调整之后的所述内存回收线程的调度优先级,对所述内存页面池进行内存回收。
[0006]第三方面,本申请实施例提供一种电子设备。该电子设备包括存储器、一个或多个处理器以及一个或多个应用程序。其中,一个或多个应用程序被存储在存储器中,并被配置为当被一个或多个处理器调用时,使得一个或多个处理器执行本申请实施例提供的方法。
[0007]第四方面,本申请实施例提供一种计算机可读取存储介质。该计算机可读取存储介质中存储有程序代码,该程序代码被配置为当被处理器调用时,使得处理器执行本申请实施例提供的方法。
[0008]本申请实施例提供一种内存回收方法、装置、电子设备及存储介质,该方法在目标中央处理器的内存页面池的当前存量大于或等于存量阈值时,可以根据目标进程的调度优先级灵活调整目标进程对应的内存页面池的内存回收线程的调度优先级,从而可以提升内存回收速度和内存回收的合理性。
附图说明
[0009]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0010]图1示出了本申请一示例性实施例提供的内存分配过程的示意图;
[0011]图2示出了本申请一示例性实施例提供的内存回收方法的应用场景的示意图;
[0012]图3示出了本申请一实施例提供的内存回收方法的流程示意图;
[0013]图4示出了本申请另一实施例提供的内存回收方法的流程示意图;
[0014]图5示出了本申请又一实施例提供的内存回收方法的流程示意图;
[0015]图6示出了本申请一示例性实施例提供的内存回收方法的流程示意图;
[0016]图7示出了本申请一实施例提供的内存回收装置的结构框图;
[0017]图8示出了本申请一实施例提供的电子设备的结构框图;
[0018]图9是本申请一实施例提供的计算机可读取存储介质的结构框图。
具体实施方式
[0019]为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
[0020]目前,Linux系统通常通过伙伴系统(也称为BUDDY系统)来管理内存,即剩余内存存放在伙伴系统的管理框架中,所有的用户进行内存分配都需要进入伙伴系统的管理框架。用户进行伙伴系统的管理框架需要拿锁,对于多核的中央处理器(CentralProcessingUnit,CPU),不同的中央处理器的用户存在相同等待卡锁的问题。
[0021]请参阅图1,图1示出了本申请一示例性实施例提供的内存分配过程的示意图。Linux系统内核为了减少锁竞争,为每个中央处理器设置了少量的阶数为零的内存页面池,其中,内存页面池也称为页面缓冲池,内存页面池指的是进程占用的分页池中的虚拟内存,是进程调用某些系统功能时,由系统核心或者驱动程序分配的。伙伴系统通常将内存分为1

11阶来管理内存,每阶对应的内存页面池的内存块数为2^n,其中,n指的是阶数,n为大于或等于0且小于或等于11的整数,每阶对应的内存页面池的内存大小为2^n*4千字节。
[0022]如图1所示,在分配内存时,中央处理器可以优先在其内存页面池中获取内存,若获取失败,再从伙伴系统中批发,从而减少进入伙伴系统的概率,减少持锁概率。
[0023]在内存紧张时,内存回收过程遵循上述伙伴系统的框架,会先进行整机的内存回收。若整机的内存回收出现较大延迟,伙伴系统会为每个中央处理器开启一个后台线程,通过遍历所有的中央处理器,对各个中央处理器的内存页面池进行内存回收。
[0024]内存页面池的内存回收线程为后台线程,后台线程的调度优先级低。在中央处理器负载较高的场景下,若实时进程进入内存回收的过程中,实时进程对应的内存页面池对应的内存回收线程的调度优先级低,该实时进程需要等待所有中央处理器对应的后台线程执行完毕之后才能执行。这对于实时进程而言存在较大的风险,因为移动终端的内存回收过程并不只有内存页面池,即使移动终端当前的内存比较紧张,可能在查杀后台应用后内存便已足够,但是实时进程仍然需要等待所有中央处理器对应的后台线程执行完毕才能执
行,导致目前的内存回收方式不合理。
[0025]基于此,本申请实施例提供一种内存回收方法、装置、电子设备及存储介质,在目标中央处理器的内存页面池的当前存量大于或等于存量阈值时,可以根据目标进程的调度优先级灵活调整目标进程对应的内存页面池的内存回收线程的调度优先级,从而可以提升内存回收速度和内存回收的合理性。
[0026]请参阅图2,图2示出了本申请一示例性实施例提供的内存回收方法的应用场景的示意图。内存回收系统100包括中央处理器110和伙伴系统120。中央处理器110与伙伴系统120连接。中央处理器110可以是多核的中央处理器或包括多个中央处理器,每个中央处理器包括对应的内存页面池。内存回收系统100可以是Linux系统。需要说明的是,本申请实施例中的内存回收系统100可以部署在移动终端中,移动终端可以是个人电脑、智能手机或者平板电脑等,在此不做具体限制。
[0027]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存回收方法,其特征在于,包括:获取目标中央处理器的内存页面池的当前存量;若所述当前存量大于或等于存量阈值,根据目标进程的调度优先级,调整所述内存页面池的内存回收线程的调度优先级,其中,所述内存页面池的内存回收线程由所述目标进程发起;根据调整之后的所述内存回收线程的调度优先级,对所述内存页面池进行内存回收。2.根据权利要求1所述的方法,其特征在于,确定所述存量阈值的步骤包括:获取当前的内存需求总量;计算所述内存需求总量与预设固定值的比值,作为存量阈值。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述当前存量小于所述存量阈值,返回所述获取目标中央处理器的内存页面池的当前存量的步骤。4.根据权利要求1所述的方法,其特征在于,所述根据目标进程的调度优先级,调整所述内存页面池的内存回收线程的调度优先级的步骤包括:将所述内存回收线程的调度优先级调整为所述目标进程的调度优先级。5.根据权利要求1

4任一项所述的方法,其特征在于,所述获取目标中央处理器的内存页面池的当前存量的步骤包括:获取所有中央处理器的内存剩余量;计算所述内存剩余量与所有中央处理器的内存总量的比值;若所述比值小于或等于预设剩余占比,获取所述目标中央处理器的内存页面池的当前存量。6.根据权利要求1

4任一项所述的方法,其特征...

【专利技术属性】
技术研发人员:李培锋
申请(专利权)人:广东明创软件科技有限公司
类型:发明
国别省市:

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

1