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

技术编号:36182627 阅读:17 留言:0更新日期:2022-12-31 20:40
本申请实施例公开了一种内存管理方法、装置、电子设备及存储介质。所述方法包括:若当前的空闲内存低于预设内存,唤醒异步线程,所述异步线程为用户线程;通过所述异步线程,对已分配内存进行内存压缩处理。通过上述方法,在检测到空闲内存低于预设内存时,通过创建的用户线程提前启动内存压缩操作,可以提升系统响应速度,并且用户线程是完全建立在用户空间的线程库,用户线程的创建、调度、同步和销毁全由库函数在用户空间完成,不需要内核的帮助,因此,通过用户线程对已分配内存进行内存压缩处理,对CPU的消耗是极低的,并且进行内存压缩处理是非常高效的。理是非常高效的。理是非常高效的。

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


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

技术介绍

[0002]内存管理是系统的核心技术之一,对提高系统的用户体验和系统运行的稳定性具有关键作用。当内存紧张时,系统会出现卡顿、运行出错、崩溃等一系列问题。相关技术中,可通过内存压缩缓解内存紧张,但是常规的内存管理方式还存在压缩效率低的问题。

技术实现思路

[0003]鉴于上述问题,本申请提出了一种内存管理方法、装置、电子设备以及存储介质,以实现改善上述问题。
[0004]第一方面,本申请实施例提供了一种内存管理方法,所述方法包括:若当前的空闲内存低于预设内存,唤醒异步线程,所述异步线程为用户线程;通过所述异步线程,对已分配内存进行内存压缩处理。
[0005]第二方面,本申请实施例提供了一种内存管理装置,所述装置包括:唤醒单元,用于若当前的空闲内存低于预设内存,唤醒异步线程,所述异步线程为用户线程;压缩单元,用于通过所述异步线程,对已分配内存进行内存压缩处理。
[0006]第三方面,本申请实施例提供了一种电子设备,包括一个或多个处理器以及存储器;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。
[0007]第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述的方法。/>[0008]本申请实施例提供了一种内存管理方法、装置、电子设备及存储介质。若当前的空闲内存低于预设内存,唤醒异步线程,所述异步线程为用户线程,通过该异步线程,对已分配内存进行内存压缩处理。通过上述方法,在检测到空闲内存低于预设内存时,通过创建的用户线程提前启动内存压缩操作,可以提升系统响应速度,并且用户线程是完全建立在用户空间的线程库,用户线程的创建、调度、同步和销毁全由库函数在用户空间完成,不需要内核的帮助,因此,通过用户线程对已分配内存进行内存压缩处理,对CPU的消耗是极低的,并且进行内存压缩处理是非常高效的。
附图说明
[0009]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0010]图1示出了本申请一实施例提出的一种内存管理方法的应用场景示意图;
[0011]图2示出了本申请一实施例提出的一种内存管理方法的应用场景示意图;
[0012]图3示出了本申请一实施例提出的一种内存管理方法的流程图;
[0013]图4示出了本申请另一实施例提出的一种内存管理方法的流程图;
[0014]图5示出了本申请再一实施例提出的一种内存管理方法的流程图;
[0015]图6示出了本申请又一实施例提出的一种内存管理方法的流程图;
[0016]图7示出了本申请实施例提出的一种内存管理装置的结构框图;
[0017]图8示出了本申请实施例提出的一种内存管理装置的结构框图;
[0018]图9示出了本申请实时中的用于执行根据本申请实施例的内存管理方法的电子设备或服务器的结构框图;
[0019]图10示出了本申请实时中的用于保存或者携带实现根据本申请实施例的内存管理方法的程序代码的存储单元。
具体实施方式
[0020]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0021]内存管理是系统的核心技术之一,对提高系统的用户体验和系统运行的稳定性具有关键作用。当内存紧张时,系统会出现卡顿、运行出错、崩溃等一系列问题。相关技术中,可通过内存回收缓解内存紧张。
[0022]在Linux内核系统中,内存回收的流程主要包括有两个,即直接内存回收(direct reclaim内存回收)和后台内存回收(kswapd内存回收)。内核进行内存回收的主要原因有两个:(1)内核需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态;(2)当真的有大于空闲内存的申请到来的时候,会触发强制内存回收。
[0023]针对上述第一种原因,Linux系统设计了kswapd后台程序,当内核分配物理页面时,由于系统内存短缺,没法在低水位情况下分配内存,因此会唤醒kswapd内核线程来异步回收内存。
[0024]针对上述第二种原因,Linux系统会触发直接内存回收(direct reclaim),在内核调用页分配函数分配物理页面时,由于系统内存短缺,不能满足分配请求,内核就会直接触发页面回收机制,尝试回收内存来解决问题。
[0025]专利技术人在对相关的内存管理方法的研究中发现,在通过上述两种方式执行内存回收时,都是由当前执行者来完成内存回收的,例如匿名页回收,是由直接内存回收的触发者来执行内存的压缩并把数据写入zram中;对于文件页的回写,也是由直接内存回收的触发者来完成的;同理,当kswapd内核线程执行内存回收的时候,是由kswapd内核线程来完成所有的操作的。通过上述方法,在执行内存回收时,都通过当前执行者来完成内存回收,会导致系统响应速度减慢。
[0026]因此,专利技术人提出了本申请中的内存管理方法、装置、电子设备及存储介质。若当
前的空闲内存低于预设内存,唤醒异步线程,所述异步线程为用户线程,通过该异步线程,对已分配内存进行内存压缩处理。通过上述方法,在检测到空闲内存低于预设内存时,通过创建的用户线程提前启动内存压缩操作,可以提升系统响应速度,并且用户线程是完全建立在用户空间的线程库,用户线程的创建、调度、同步和销毁全由库函数在用户空间完成,不需要内核的帮助,因此,通过用户线程对已分配内存进行内存压缩处理,对CPU的消耗是极低的,并且进行内存压缩处理是非常高效的。
[0027]在本申请实施例中,所提供的内存管理方法可以由电子设备执行。在由电子设备执行的这种方式中,本申请实施例提供的内存管理方法中所有步骤可以均由电子设备执行。例如,如图1所示,通过电子设备100的处理器执行若当前的空闲内存低于预设内存,唤醒异步线程,所述异步线程为用户线程;通过所述异步线程,对已分配内存进行内存压缩处理。
[0028]再者,本申请实施例提供的内存管理方法也可以由服务器(云端)进行执行。对应的,在由服务器执行的这种方式中,可以由电子设备检测当前的空闲内存是否低于预设内存,若检测到当前的空闲内存低于预设内存,并将当前的空闲内存低于预设内存同步发送给服务器,然后由服务器本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种内存管理方法,其特征在于,所述方法包括:若当前的空闲内存低于预设内存,唤醒异步线程,所述异步线程为用户线程;通过所述异步线程,对已分配内存进行内存压缩处理。2.根据权利要求1所述的方法,其特征在于,所述通过所述异步线程,对已分配内存进行内存压缩处理,包括:获取当前的CPU负载;若所述当前的CPU负载小于预设负载阈值,通过所述异步线程,对已分配内存进行内存压缩处理。3.根据权利要求2所述的方法,其特征在于,所述通过所述异步线程,对已分配内存进行内存压缩处理,包括:获取当前多个内核各自对应的CPU负载;将所述多个内核中对应的CPU负载低于所述预设负载阈值的内核作为目标内核;通过所述目标内核运行所述异步线程,对已分配内存进行内存压缩处理。4.根据权利要求1所述的方法,其特征在于,所述若当前的空闲内存低于预设内存,唤醒异步线程,包括:在执行直接内存回收操作或后台内存回收操作时,若当前的空闲内存低于预设内存,唤醒所述异步线程。5.根据权利要求1

4任一所述的方法,其特征在于,所述方法还包括:通过所述异步线程,对已压缩内存进行解压缩处理。6.根据权利要求5所述的方法,其特征在于,...

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

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

1