一种内存管理方法、装置、设备和存储介质制造方法及图纸

技术编号:35405454 阅读:32 留言:0更新日期:2022-11-03 10:58
本申请实施例公开了一种内存管理方法,所述方法包括:确定中央缓存中第一连续页内存的当前使用率;若所述当前使用率小于或等于预设阈值,从页缓存中申请第二连续页内存;拆分所述第二连续页内存为至少一个第一空闲对象,并基于所述至少一个第一空闲对象得到第一内存链表;其中,所述第一内存链表用于在进程申请对象时为所述进程提供匹配的对象;对所述第一连续页内存进行释放处理。本申请实施例同时还公开了一种内存管理装置、设备和存储介质。设备和存储介质。设备和存储介质。

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


[0001]本申请涉及通信
,尤其涉及一种内存管理方法、装置、设备和存储介质。

技术介绍

[0002]为了有效提高分布式存储系统的内存分配管理,提出的线程缓存的动态内存分配(Thread

Caching Malloc,TCMalloc)技术已日益成熟,其能够有效降低频繁分配、释放内存造成的性能损耗,并且有效控制内存碎片。按照所分配内存的大小,TCMalloc将内存分配分为三类:小对象分配(0,256千字节(KiloByte,KB)];中对象分配(256KB,1兆字节(MegaByte,MB)];大对象分配(1MB,正无穷大(+∞))。目前,TCMalloc对小对象分配进行管理时,需实现三级缓存,分别依次是:线程级缓存(ThreadCache),中央缓存(Central Cache),页缓存(PageHeap)。ThreadCache根据需求可以分成多个不同大小,记为size class。
[0003]目前,进程在A时刻对某个size class需求较大时,CentralCache会申请多个由若干内存页组成且逻辑连续的内存空间Span以供进程使用,但在B时刻进程对该size class需求降低后,不能快速释放Span,导致Span的利用率较低。而目前并没有能够快速释放Span的方法。
[0004]申请内容
[0005]有鉴于此,本申请实施例期望提供一种内存管理方法、装置、设备和存储介质,解决了目前没有快速释放Span的技术方案的问题,提出了一种快速释放Span的技术方案,提高了内存缓存的利用率。
[0006]为达到上述目的,本申请的技术方案是这样实现的:
[0007]第一方面,一种内存管理方法,所述方法应用于实现线程缓存的动态内存分配TCMalloc的内存管理设备,所述方法包括:
[0008]确定中央缓存中第一连续页内存的当前使用率;
[0009]若所述当前使用率小于或等于预设阈值,从页缓存中申请第二连续页内存;
[0010]拆分所述第二连续页内存为至少一个第一空闲对象,并基于所述至少一个第一空闲对象得到第一内存链表;其中,所述第一内存链表用于在进程申请对象时为所述进程提供匹配的对象;
[0011]对所述第一连续页内存进行释放处理。
[0012]可选的,所述方法还包括:
[0013]若所述当前使用率小于或等于所述预设阈值,确定所述线程缓存的第一自由列表中包括的未被进程使用的第一对象;
[0014]存储所述第一对象至所述中央缓存的第一空闲列表中;其中,所述第一空闲列表用于存储当前处于空闲状态的对象。
[0015]可选的,所述拆分所述第二连续页内存为至少一个第一空闲对象,并基于所述至少一个第一空闲对象得到第一内存链表之后,所述方法还包括:
[0016]从所述第一内存链表中确定与所述进程匹配的至少一个第二空闲对象;
[0017]基于所述至少一个第二空闲对象,在所述线程缓存中创建第二自由列表;
[0018]若检测到所述进程的申请对象操作,从所述第二自由列表中,确定与所述申请对象操作匹配的第二对象;
[0019]分配所述第二对象至所述进程。
[0020]可选的,所述方法还包括:
[0021]确定选择指令;其中,所述选择指令用于指示在检测到所述第一连续内存页的当前使用率小于或等于所述预设阈值的情况下,所述进程是否归还当前使用的第三对象;
[0022]若所述选择指令为目标指令,从所述第二自由列表中确定第四对象;其中,所述第二对象包括所述第四对象;
[0023]拷贝所述第三对象中的缓存内容至所述第四对象中;
[0024]归还所述第三对象至所述中央缓存。
[0025]可选的,所述归还所述第三对象至所述中央缓存,包括:
[0026]确定所述第三对象包括的所属内存链表的目标标识信息;
[0027]若所述目标标识信息为所述第一连续页内存的第一标识信息,将所述第三对象保存至所述第一连续页内存对应的第一空闲列表中;其中,所述第一空闲列表用于存储当前处于空闲状态的对象。
[0028]可选的,所述方法还包括:
[0029]若所述目标标识信息为所述第二连续页内存的第二标识信息,将所述第三对象保存至所述第二连续页内存对应的第二空闲列表中;其中,所述第二空闲列表用于存储当前处于空闲状态的对象。
[0030]可选的,所述确定中央缓存中第一连续页内存的当前使用率,包括:
[0031]获取当前内存缓存大小;
[0032]若所述当前内存缓存大小大于缓存阈值,确定所述第一连续页内存的所述当前使用率。
[0033]第二方面,一种内存管理装置,所述装置用于实现TCMalloc,所述装置包括:确定单元、申请单元、拆分单元和释放单元;其中:
[0034]所述确定单元,用于确定中央缓存中第一连续页内存的当前使用率;
[0035]所述申请单元,用于若所述当前使用率小于或等于预设阈值,从页缓存中申请第二连续页内存;
[0036]所述拆分单元,用于拆分所述第二连续页内为至少一个第一空闲对象,并基于所述至少一个第一空闲对象得到第一内存链表;其中,所述第一内存链表用于在进程申请对象时为所述进程提供匹配的对象;
[0037]所述释放单元,用于对所述第一连续页内存进行释放处理。
[0038]第三方面,一种内存管理设备,所述设备包括:存储器、处理器、内存和通信总线;其中:
[0039]所述存储器,用于存储可执行指令;
[0040]所述通信总线,用于实现所述处理器和所述存储器之间的通信连接;
[0041]所述内存,用于为进程运行提供数据缓存的对象;
[0042]所述处理器,用于执行所述存储器中存储的内存管理程序,实现如上述任一项所述的内存管理方法的步骤。
[0043]第四方面,一种存储介质,所述存储介质上存储有内存管理程序,所述内存管理程序被处理器执行时实现如上述任一项所述的内存管理方法的步骤。
[0044]本申请的实施例所提供的内存管理方法、装置、设备和存储介质,通过确定中央缓存中第一连续页内存的当前使用率后,若当前使用率小于或等于预设阈值,从页缓存中申请第二连续页内存,并拆分第二连续页内存为至少一个第一空闲对象,以基于所述至少一个第一空闲对象得到第一内存链表最后对第一连续内存页进行释放处理。这样,在第一连续页内存的当前使用率较低时,从页缓存中申请新的第二连续页内存,以便在进程需要对象时,将第二连续页内存对应的对象分配给进程,并将第一连续页内存进行释放,解决了目前没有快速释放Span的技术方案的问题,提出了一种快速释放Span的技术方案,提高了内存缓存的利用率。
附图说明
[0045]图1为本申请实施例提供的一种内存管理方法的流程示意图;
[0046]图2为本申请实施例提供的另一种内存管理方法的流程示本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存管理方法,其特征在于,所述方法应用于实现线程缓存的动态内存分配TCMalloc的内存管理设备,所述方法包括:确定中央缓存中第一连续页内存的当前使用率;若所述当前使用率小于或等于预设阈值,从页缓存中申请第二连续页内存;拆分所述第二连续页内存为至少一个第一空闲对象,并基于所述至少一个第一空闲对象得到第一内存链表;其中,所述第一内存链表用于在进程申请对象时为所述进程提供匹配的对象;对所述第一连续页内存进行释放处理。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述当前使用率小于或等于所述预设阈值,确定所述线程缓存的第一自由列表中包括的未被进程使用的第一对象;存储所述第一对象至所述中央缓存的第一空闲列表中;其中,所述第一空闲列表用于存储当前处于空闲状态的对象。3.根据权利要求1至2任一所述的方法,其特征在于,所述拆分所述第二连续页内存为至少一个第一空闲对象,并基于所述至少一个第一空闲对象得到第一内存链表之后,所述方法还包括:从所述第一内存链表中确定与所述进程匹配的至少一个第二空闲对象;基于所述至少一个第二空闲对象,在所述线程缓存中创建第二自由列表;若检测到所述进程的申请对象操作,从所述第二自由列表中,确定与所述申请对象操作匹配的第二对象;分配所述第二对象至所述进程。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:确定选择指令;其中,所述选择指令用于指示在检测到所述第一连续内存页的当前使用率小于或等于所述预设阈值的情况下,所述进程是否归还当前使用的第三对象;若所述选择指令为目标指令,从所述第二自由列表中确定第四对象;其中,所述第二对象包括所述第四对象;拷贝所述第三对象中的缓存内容至所述第四对象中;归还所述第三对象至所述中央缓存。5.根据权利要求4所述的方法,其特征在于,所述归还所述第三对象至所述中央缓存,包括:确定所述第三对象包括的所属内存链表的目标标识信...

【专利技术属性】
技术研发人员:张增冉李跃威
申请(专利权)人:深信服科技股份有限公司
类型:发明
国别省市:

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

1