【技术实现步骤摘要】
内存分配方法和装置、电子设备和存储介质
[0001]本申请涉及数据处理领域,尤其涉及一种内存分配方法和装置、电子设备和存储介质。
技术介绍
[0002]目前,在如MySQL(一种关系型数据库管理系统)等数据库的业务逻辑(例如,内存缓存的使用)中,查询数据、更新数据等使用的内存空间都是通过malloc(memory allocation,指动态内存分配函数)分配生成的,即,所有的内存空间都是通过动态申请完成的。
[0003]上述业务逻辑使用的是大都是临时内存,一个事务完成或者一个连接完成之后,会把动态申请的内存空间全部释放掉,在一个事务过程中,有大量的内存申请释放,长期频繁的申请释放会导致大量的内存碎片。
[0004]对于上述内存空间的分配方式,内存申请过于频繁,如果多线程并发申请内存,会造成加锁串行,影响内存分配的效率。可见,相关技术中的内存分配方式,在多线程并发申请内存时存在易造成加锁串行导致的内存分配效率低的问题。
技术实现思路
[0005]本申请提供了一种内存分配方法和装置、电子设备和存 ...
【技术保护点】
【技术特征摘要】
1.一种内存分配方法,其特征在于,包括:接收到第一线程发送的内存申请消息,其中,所述第一线程为与目标应用对应的线程,所述内存申请消息用于申请目标内存大小的内存空间;响应所述内存申请消息,从多个内存块中确定出与所述第一线程的目标线程标识对应的目标内存块,其中,所述多个内存块是为所述目标应用分配的内存块,所述多个内存块允许并行加锁申请内存;在从所述目标内存块的空闲内存空间中查找到内存大小大于或者等于所述目标内存大小的第一内存空间的情况下,将所述第一内存空间分配给所述第一线程。2.根据权利要求1所述的方法,其特征在于,从所述多个内存块中确定出与所述第一线程的所述目标线程标识对应的所述目标内存块包括:将所述目标线程标识对目标值进行哈希取余,得到目标哈希值,其中,所述目标值为所述多个内存块中包含的内存块的总数量;将所述多个内存块中与所述目标哈希值对应的内存块,确定为所述目标内存块。3.根据权利要求2所述的方法,其特征在于,将所述目标线程标识对所述目标值进行哈希取余,得到所述目标哈希值包括:将所述第一线程的目标线程地址对所述目标值进行哈希取余,得到所述目标哈希值,其中,所述目标线程标识为所述目标线程地址。4.根据权利要求3所述的方法,其特征在于,在将所述第一线程的所述目标线程地址对所述目标值进行哈希取余之前,所述方法还包括:在所述目标线程地址的最低位为零的情况下,将所述目标线程地址向右平移至少一位,直到所述目标线程地址的最低位不为零,得到更新后的所述目标线程地址。5.根据权利要求1所述的方法,其特征在于,在接收到所述第一线程发送的所述内存申请消息之前,所述方法还包括:在目标设备的操作系统启动的情况下,向所述目标设备的操作系统申请第二内存空间,其中,所述目标设备为运行所述目标应用的设备;将所述第二内存空间划分成目标数量的内存块,得到所述多个内存块。6.根据权利要求1所述的方法,其特征在于,将所述第一内存空间分配给所述第一线程包括:通过调用伙伴系统的内存分配接口,将所述目标内存块中的所述第一内存空间分配给所述第一线程,其中,传入所述伙伴系统的内存分配参数包括:所述目标内存块的内存范围,所述目标内存大小。7.根据权利要求1所述的方法,其特征在于,在将所述第一内存空间分配给所述第一线...
【专利技术属性】
技术研发人员:邱海港,
申请(专利权)人:北京金山云网络技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。