[发明专利]一种内存管理方法、装置、电子设备及存储介质在审
申请号: | 202110562803.6 | 申请日: | 2021-05-24 |
公开(公告)号: | CN113515376A | 公开(公告)日: | 2021-10-19 |
发明(设计)人: | 白海龙 | 申请(专利权)人: | 新华三大数据技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 450000 河南省郑州市郑州高*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 管理 方法 装置 电子设备 存储 介质 | ||
1.一种内存管理方法,其特征在于,所述方法用于实现实例的内存分配,所述方法包括:
基于实例所申请的内存空间的大小适配块管理对象Part分类;其中,Part为由多个具有相同尺寸的切片管理内存块Slab组成的内存管理对象;所述Slab中包括由原始内存块Blk切分的多个相同大小的内存片Slice;所述Part依据Slice的大小分类;
从本地缓存LocalCache中包括的与适配的Part分类一致的空闲内存片Slice中为实例分配内存;
当所述LocalCache中的空间不足时,从适配的Part分类对应的Part所管理的具有空闲Slice的Slab中为实例分配内存;
当适配的Part中无空闲的Slice时,从内存池MemPool中获取原始内存块Blk,将Blk初始化为适配的Part分类对应的Slab,将Slab加入到适配的Part中,再从适配的Part中为实例分配内存。
2.根据权利要求1所述的方法,其特征在于,所述Part包括:
无空闲链表Emptylist,其中的所有Slab都是已将内部内存片Slice全部分配出去的Slab;
部分空闲链表Partiallist,其中的所有Slab都是已将内部部分内存片Slice分配出去,还有部分Slice未被分配出去的Slab;
全空闲链表Fulllist,其中的所有Slab都是全部内存片Slice都未被分配的Slab;
所述从适配的Part分类对应的Part所管理的具有空闲Slice的Slab中为实例分配内存的方法为:
首先判断Partiallist中是否有充足的空闲的Slice可供分配,如果有则从对应的Slab中分配,如果没有则从Fulllist中获取未被分配的Slab填充到Partiallist中,然后再从填充的Slab中分配。
3.根据权利要求2所述的方法,其特征在于,所述方法还用于实现实例的内存释放,内存释放的步骤包括:
在将释放的内存释放回LocalCache不会导致LocalCache溢出的情况下,将释放的内存释放回LocalCache;
在释放回LocalCache会导致LocalCache溢出的情况下,将释放的内存释放回Part;
在释放回Part会导致Part溢出的情况下,将释放的内存释放回MemPool;
在释放回MemPool会导致MemPool溢出的情况下,将释放的内存释放回操作系统。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述实例与块管理对象组Group绑定,所述Group由多个不同分类的Part组成;
所述基于所申请的内存空间的大小适配块管理对象Part分类具体为:在所述Group所包含的Part分类中进行适配;
所述适配的Part为所述Group中的Part。
5.根据权利要求4所述的方法,其特征在于,
在实例启动时,使用Part分类表对所述Group进行初始化;
所述Part分类表采用默认配置和/或采用如下动态配置方法:
对实例申请的不同大小的内存空间的频率进行统计分析;
基于预设门限,在默认Part分类表中新增频率高于预设门限的内存空间大小对应的Part分类。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于新华三大数据技术有限公司,未经新华三大数据技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110562803.6/1.html,转载请声明来源钻瓜专利网。