System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 内存分配方法、装置、电子设备及计算机存储介质制造方法及图纸_技高网

内存分配方法、装置、电子设备及计算机存储介质制造方法及图纸

技术编号:40418445 阅读:4 留言:0更新日期:2024-02-20 22:36
本公开提供了一种内存分配方法、装置、电子设备及计算机存储介质,可以应用于计算机技术领域。内存分配方法包括:响应于接收到针对目标线程的内存分配请求,从与目标线程相对应的内存空间中确定目标内存页,其中,内存空间包括多个内存页,每个内存页均配置有一个第一可用空间链表,每个内存页的第一可用空间链表用于存储内存页中可用内存块的地址,目标内存页包括数据尺寸相同的多个内存块;以及根据目标内存页的第一可用空间链表,为内存分配请求分配目标内存页中具有目标内存量的内存,其中,目标内存量为内存分配请求所请求的内存量。

【技术实现步骤摘要】

本公开涉及计算机,更具体地,涉及一种内存分配方法、装置、电子设备及计算机存储介质


技术介绍

1、随着计算机技术的快速发展,计算机能够执行越来越多的在线服务,例如,产品推荐、产品预测、在线广告展示、特征处理、模型构建、模型处理等。在线服务需要的特征或数据种类越来越多,特征量或数据量越来越大,对计算机设备的性能要求越来越高。

2、在实现本公开构思的过程中,专利技术人发现相关技术中至少存在如下问题:将同一数据结构的多个成员存储在整个内存空间中会导致数据结构的空间局部性差,影响cpu(中央处理器,central processing unit)读写数据的效率。


技术实现思路

1、有鉴于此,本公开提供了一种内存分配方法、装置、电子设备及计算机存储介质。

2、本公开的一个方面提供了一种内存分配方法,包括:响应于接收到针对目标线程的内存分配请求,从与目标线程相对应的内存空间中确定目标内存页,其中,内存空间包括多个内存页,每个内存页均配置有一个第一可用空间链表,每个内存页的第一可用空间链表用于存储内存页中可用内存块的地址,目标内存页包括数据尺寸相同的多个内存块;以及根据目标内存页的第一可用空间链表,为内存分配请求分配目标内存页中具有目标内存量的内存,其中,目标内存量为内存分配请求所请求的内存量。

3、根据本公开的实施例,其中,在响应于接收到针对目标线程的内存分配请求,从与目标线程相对应的内存空间中确定目标内存页之前,包括:获取目标线程的第二可用空间链表,其中,第二可用空间链表用于存储目标线程中可用内存块的地址;以及基于每个内存页的内存容量,从第二可用空间链表中切分出针对每个内存页的第一可用空间链表。

4、根据本公开的实施例,其中,响应于接收到针对目标线程的内存分配请求,从与目标线程相对应的内存空间中确定目标内存页包括:确定内存分配请求所请求的内存的数据尺寸和目标内存量;从与目标线程相对应的内存空间中确定与数据尺寸相匹配的至少一个内存页;以及根据至少一个内存页各自的第一可用空间链表和目标内存量,从至少一个内存页中确定目标内存页。

5、根据本公开的实施例,其中,每个内存页中还配置有专有缓存链表,专有缓存链表用于分配和回收属于目标内存页、且被目标线程内其他内存页实时释放的内存;根据目标内存页的第一可用空间链表,为内存分配请求分配目标内存页中具有目标内存量的内存包括:响应于检测到第一可用空间链表的可用内存小于目标内存量,根据专有缓存链表,为内存分配请求分配目标内存页中具有目标内存量的内存。

6、根据本公开的实施例,还包括:响应于检测到第一可用空间链表中不存在可用内存,从目标内存页的专有缓存链表中回收可用内存;利用回收的可用内存更新第一可用空间链表;以及根据更新后的第一可用空间链表,为内存分配请求分配目标内存页中具有目标内存量的内存。

7、根据本公开的实施例,其中,每个内存页中还配置有交互缓存链表,交互缓存链表用于存储属于目标内存页、且被目标线程之外的其他线程释放的内存;根据专有缓存链表,为内存分配请求分配目标内存页中具有目标内存量的内存包括:响应于检测到专有缓存链表的可用内存小于目标内存量,将交互缓存链表中的可用内存回收到专有缓存链表;更新专有缓存链表;以及根据更新后的专有缓存链表,为内存分配请求分配目标内存页中具有目标内存量的内存。

8、根据本公开的实施例,还包括:响应于检测到第一可用空间链表、更新后的第一可用空间链表、专有缓存链表、或者更新后的专有缓存链表的可用内存小于目标内存量,将部分内存量的内存分配结果更新为内存分配失败,其中,部分内存量为目标内存量中超过可用内存的内存量。

9、根据本公开的实施例,还包括:响应于检测到部分内存量的内存分配失败,根据位于第一可用空间链表之后的下一个第一可用空间链表,为内存分配请求分配下一个内存页中具有部分内存量的内存,其中,下一个内存页表征处于目标内存页之后的内存页。

10、本公开的另一个方面提供了一种内存分配装置,包括:确定模块,用于响应于接收到针对目标线程的内存分配请求,从与目标线程相对应的内存空间中确定目标内存页,其中,内存空间包括多个内存页,每个内存页均配置有一个第一可用空间链表,每个内存页的第一可用空间链表用于存储内存页中可用内存块的地址,目标内存页包括数据尺寸相同的多个内存块;以及分配模块,用于根据目标内存页的第一可用空间链表,为内存分配请求分配目标内存页中具有目标内存量的内存,其中,目标内存量为内存分配请求所请求的内存量。

11、本公开的另一方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现如上的方法。

12、本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,指令在被执行时用于实现如上的方法。

13、本公开的另一方面提供了一种计算机程序产品,计算机程序产品包括计算机可执行指令,指令在被执行时用于实现如上的方法。

14、在本公开的实施例中,由于每个内存页均配置有一个第一可用空间链表,因此,在根据目标内存页的第一可用空间链表,为内存分配请求分配内存时,仅能在第一可用空间链表中存储的可用内存块中分配内存,也即只能在目标内存页分配中具有目标内存量的内存,无法在目标线程对应的整个内存空间中分配内存。因此,本公开的实施例能够解决因将同一数据结构的多个成员存储在整个内存空间导致的空间局部性差的技术问题,能够避免将同一数据结构的分散到整个内存空间,实现提高空间局部性,提高cpu读写效率的技术效果。

本文档来自技高网...

【技术保护点】

1.一种内存分配方法,包括:

2.根据权利要求1所述的方法,其中,在所述响应于接收到针对目标线程的内存分配请求,从与所述目标线程相对应的内存空间中确定目标内存页之前,包括:

3.根据权利要求1所述的方法,其中,所述响应于接收到针对目标线程的内存分配请求,从与所述目标线程相对应的内存空间中确定目标内存页包括:

4.根据权利要求1-3任一项所述的方法,其中,每个所述内存页中还配置有专有缓存链表,所述专有缓存链表用于分配和回收属于所述目标内存页、且被所述目标线程内其他内存页实时释放的内存;

5.根据权利要求4所述的方法,还包括:

6.根据权利要求4所述的方法,其中,每个内存页中还配置有交互缓存链表,所述交互缓存链表用于存储属于所述目标内存页、且被所述目标线程之外的其他线程释放的内存;

7.根据权利要求5或6所述的方法,还包括:

8.根据权利要求7所述的方法,还包括:

9.一种内存分配装置,包括:

10.一种电子设备,包括:

11.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至8中任一项所述的方法。

12.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的方法。

...

【技术特征摘要】

1.一种内存分配方法,包括:

2.根据权利要求1所述的方法,其中,在所述响应于接收到针对目标线程的内存分配请求,从与所述目标线程相对应的内存空间中确定目标内存页之前,包括:

3.根据权利要求1所述的方法,其中,所述响应于接收到针对目标线程的内存分配请求,从与所述目标线程相对应的内存空间中确定目标内存页包括:

4.根据权利要求1-3任一项所述的方法,其中,每个所述内存页中还配置有专有缓存链表,所述专有缓存链表用于分配和回收属于所述目标内存页、且被所述目标线程内其他内存页实时释放的内存;

5.根据权利要求4所述的方法,还包括:

6.根据...

【专利技术属性】
技术研发人员:陈航金均生李健王宝梁悦然王昆垚党金源张国威闫凯
申请(专利权)人:北京沃东天骏信息技术有限公司
类型:发明
国别省市:

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

1