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

技术编号:36290658 阅读:61 留言:0更新日期:2023-01-13 10:03
本申请实施例公开了一种内存回收方法、装置、电子设备及存储介质。所述方法包括:在进行内存回收的过程中,通过内存回收线程对第一内存页面进行回收;通过第一异步线程对第二内存页面进行回收,其中,所述内存回收线程与所述第一异步线程不同,所述第一内存页面与所述第二内存页面不同,所述第二内存页面为对应于驱动程序的内存页面。通过上述方法,在进行内存回收的过程中,通过内存回收线程和第一异步线程异步进行不同的内存页面的回收,使得不同的内存页面的回收可以并行进行,进而可以有效提高内存回收的速度,改善用户的性能体验。改善用户的性能体验。改善用户的性能体验。

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


[0001]本申请属于内存回收
,具体涉及一种内存回收方法、装置、电子设备及存储介质。

技术介绍

[0002]内存回收是系统的核心技术之一,对提高系统的用户体验和系统运行的稳定性具有关键作用。当内存紧张时,系统会出现卡顿、运行出错、崩溃等一系列问题。相关技术中,在进行内存回收时,内存回收的速度还有待提高。

技术实现思路

[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]图10示出了本申请实时中的用于保存或者携带实现根据本申请实施例的内存回收方法的程序代码的存储单元。
具体实施方式
[0020]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0021]随着移动终端技术的迅速发展,消费者对于移动终端的需求不再仅仅局限于实现简单的功能,而是可以流畅的使用多种功能。移动终端的流畅性已经是用户消费购买考虑的一个必要的因素。而内存性能在流畅性中的重要性更为突出,因为目前的终端设备,应用的内存需求日益增大,例如大型的手游类等一个应用就可能占据了2G bytes的内存空间,而如何更好的管理好内存的性能,最关键的就是内存回收的技术。
[0022]在Linux内核系统中,内存回收的流程主要包括有两个,即直接内存回收(direct reclaim内存回收)和后台内存回收(kswapd内存回收)。内核进行内存回收的主要原因有两个:(1)内核需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态;(2)当真的有大于空闲内存的申请到来的时候,会触发强制内存回收。
[0023]针对上述第一种原因,Linux系统设计了kswapd后台内存回收线程,当内核分配物理页面时,由于系统内存短缺,没法在低水位情况下分配内存,因此会唤醒kswapd后台内存回收线程进行内存回收,以保证内存分配不延时。
[0024]针对上述第二种原因,Linux系统会触发直接内存回收(direct reclaim),在内核调用页分配函数分配物理页面时,由于系统内存短缺,不能满足分配请求,内核就会直接触发页面回收机制,用户线程进入内存回收流程,以保证内存使用。
[0025]专利技术人在对相关的内存回收方法的研究中发现,在通过上述两种方式进行内存回收的过程中,不管是由kswapd后台内存回收线程进行内存回收还是由用户线程进行内存回
收,都会串行执行shrink_Iruvec和shrink_slab两个操作。其中,shrink_Iruvec操作用于对匿名页面和文件页面进行回收,shrink_slab操作用于对各类驱动程序对应的内存页面进行回收。其中,串行执行shrink_Iruvec和shrink_slab两个操作指的是,先执行完shrink_Iruvec操作,再执行shrink_slab操作。
[0026]在执行shrink_slab操作时,由于驱动程序的质量参差不齐,在对各类驱动程序的内存页面进行回收时,是串行对各类驱动程序对应的内存页面进行回收的,一旦其中一个驱动程序的内存页面的回收阻塞,会导致后台内存回收或直接内存回收整体阻塞,从而会导致内存回收不及时或内存回收整体阻塞。
[0027]因此,专利技术人提出了本申请中的内存回收方法、装置、电子设备及存储介质。在进行内存回收的过程中,通过内存回收线程对第一内存页面进行回收,通过第一异步线程对第二内存页面进行回收,其中,所述内存回收线程与所述第一异步线程不同,所述第一内存页面与所述第二内存页面不同,所述第二内存页面为对应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存回收方法,其特征在于,所述方法包括:在进行内存回收的过程中,通过内存回收线程对第一内存页面进行回收;通过第一异步线程对第二内存页面进行回收,其中,所述内存回收线程与所述第一异步线程不同,所述第一内存页面与所述第二内存页面不同,所述第二内存页面为对应于驱动程序的内存页面。2.根据权利要求1所述的方法,其特征在于,所述在进行内存回收的过程中,通过内存回收线程对第一内存页面进行回收之前还包括:若当前的空闲内存低于预设内存,唤醒所述第一异步线程。3.根据权利要求1所述的方法,其特征在于,所述驱动程序包括多个,所述通过第一异步线程对第二内存页面进行回收,包括:通过所述第一异步线程串行对多个所述驱动程序各自对应的第二内存页面进行回收。4.根据权利要求3所述的方法,其特征在于,所述通过所述第一异步线程串行对多个所述驱动程序各自对应的第二内存页面进行回收,包括:在通过所述第一异步线程串行对多个所述驱动程序各自对应的第二内存页面进行回收的过程中,获取第一驱动程序对应的内存回收时间,其中,所述第一驱动程序为当前正在进行第二内存页面回收的驱动程序;若所述第一驱动程序对应的内存回收时间超过预设时间阈值,且所述第一驱动程序对应的第二内存页面的回收还未完成,则创建第二异步线程;通过所述第二异步线程对第二驱动程序对应的第二内存页面进行回收,其中,所述第二驱动程序为在所述第一驱动程序之后进行第二内存页面回收的驱动程序。5.根据权利要求4所述的方法,其特征在于...

【专利技术属性】
技术研发人员:李培锋
申请(专利权)人:OPPO广东移动通信有限公司
类型:发明
国别省市:

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

1