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

堆空间分配方法、装置、电子设备和存储介质制造方法及图纸

技术编号:40971175 阅读:2 留言:0更新日期:2024-04-18 21:20
本公开实施例提供了一种堆空间分配方法、装置、电子设备和存储介质。应用于堆空间分配技术领域,所述方法包括接收负载发送的堆空间申请请求;根据堆空间申请请求,检索堆空间分配表;若堆空间分配表不存在连续的、和堆空间申请请求对应堆空间大小相等的地址空间,则对堆空间分配表是否存在多个地址空间满足多个地址空间总的堆空间大小和堆空间申请请求对应堆空间大小相等进行判断;若是,则将多个地址空间的起始地址写入迭代器,并修改多个地址空间在堆空间分配表中的状态信息,以便于迭代器将根据多个地址空间的起始地址生成的逻辑地址发送至负载,实现对堆空间分配表在分配堆空间区块产生的零散的堆空间区块的分配,提高对堆空间的利用率。

【技术实现步骤摘要】

本公开涉及堆空间分配,尤其涉及一种堆空间分配方法、装置、电子设备和存储介质


技术介绍

1、堆空间是计算机内程序运行过程中用于存储动态分配的数据,其可以分配和释放任意大小的内存块,并且在程序的整个生命周期内保持有效。对堆空间的分配能够在运行时根据需要分配适当大小的内存块,从而满足动态数据结构的要求;使得程序可以根据输入数据的实际大小动态分配内存,从而更好地适应各种输入情况,并且能够充分利用计算机的内存资源;可以通过使用锁和同步机制来确保线程安全,从而保证多线程程序的正确性和可靠性;使得程序具备更大的灵活性和扩展性,通过动态分配内存,程序可以根据实际需要进行内存的分配和释放,从而避免了静态分配固定大小内存的限制,这使得程序能够适应不同场景下的变化需求,并且能够更好地应对内存资源的动态变化。因此,对堆空间进行分配具有重要意义。

2、目前,现有技术对堆空间进行分配时,将堆空间中固定大小的堆区块进行分配,且在分配过程中产生较多堆碎片,在分配的过程中,产生的堆碎片由于无法满足需求而不能给相应负载分配堆空间,造成堆空间的浪费,导致对堆空间的利用率较低。

3、因此,亟需一种具有较高利用率的堆空间分配方法、装置、电子设备和存储介质。


技术实现思路

1、本公开提供了一种堆空间分配方法、装置、电子设备和存储介质。

2、根据本公开的第一方面,提供了一种堆空间分配方法。该方法包括:

3、接收负载发送的堆空间申请请求;

4、根据所述堆空间申请请求,检索堆空间分配表;

5、若所述堆空间分配表不存在连续的、和所述堆空间申请请求对应堆空间大小相等的地址空间,则对所述堆空间分配表是否存在多个地址空间满足所述多个地址空间总的堆空间大小和所述堆空间申请请求对应堆空间大小相等进行判断;

6、若是,则将所述多个地址空间的起始地址写入迭代器,并修改所述多个地址空间在所述堆空间分配表中的状态信息,以便于所述迭代器将根据所述多个地址空间的起始地址生成的逻辑地址发送至所述负载。

7、进一步地,所述根据所述多个地址空间的起始地址生成的逻辑地址,包括:

8、获取所述多个地址空间的起始地址、终止地址;

9、根据各所述地址空间的起始地址、终止地址,将所述多个地址空间按顺序进行拼接,得到逻辑地址。

10、进一步地,所述将所述多个地址空间按顺序进行拼接,包括:

11、将所述多个地址空间中第i个地址空间的终止地址和第i+1个地址空间的起始地址进行拼接,i为大于0且小于n的正整数,n为所述多个地址空间的数量且n大于1的正整数。

12、进一步地,所述将所述多个地址空间的起始地址分别发送至所述负载,包括:

13、获取所述多个地址空间对应的堆空间大小;

14、将各所述堆空间大小写入所述迭代器,以便所述迭代器将各所述堆空间大小发送至所述负载。

15、进一步地,所述方法还包括:

16、若所述堆空间分配表存在连续的、和所述堆空间申请请求对应堆空间大小相等的地址空间,则将所述地址空间的起始地址写入迭代器,并修改所述地址空间在所述堆空间分配表中的状态信息,以便于所述迭代器将所述地址空间的起始地址发送至所述负载。

17、进一步地,所述方法还包括:

18、若所述堆空间分配表不存在多个地址空间满足所述多个地址空间总的堆空间大小和所述堆空间申请请求对应堆空间大小相等,则向所述迭代器写入预设信息,以便于所述迭代器向所述负载发送错误码信息。

19、进一步地,所述状态信息包括:已分配状态和未分配状态。

20、根据本公开的第二方面,提供了一种堆空间分配装置。该装置包括:

21、接收模块,用于接收负载发送的堆空间申请请求;

22、检索模块,用于根据所述堆空间申请请求,检索堆空间分配表;

23、判断模块,用于若所述堆空间分配表不存在连续的、和所述堆空间申请请求对应堆空间大小相等的地址空间,则对所述堆空间分配表是否存在多个地址空间满足所述多个地址空间总的堆空间大小和所述堆空间申请请求对应堆空间大小相等进行判断;

24、写入模块,用于若是,则将所述多个地址空间的起始地址写入迭代器,并修改所述多个地址空间在所述堆空间分配表中的状态信息,以便于所述迭代器将根据所述多个地址空间的起始地址生成的逻辑地址发送至所述负载。

25、根据本公开的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现所述方法。

26、根据本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述方法。

27、本公开通过接收负载发送的堆空间申请请求;根据所述堆空间申请请求,检索堆空间分配表;若所述堆空间分配表不存在连续的、和所述堆空间申请请求对应堆空间大小相等的地址空间,则对所述堆空间分配表是否存在多个地址空间满足所述多个地址空间总的堆空间大小和所述堆空间申请请求对应堆空间大小相等进行判断;若是,则将所述多个地址空间的起始地址写入迭代器,并修改所述多个地址空间在所述堆空间分配表中的状态信息,以便于所述迭代器将根据所述多个地址空间的起始地址生成的逻辑地址发送至所述负载,实现对堆空间分配表在分配堆空间区块产生的零散的堆空间区块的分配,提高对堆空间的利用率。

28、应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本公开实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。

本文档来自技高网...

【技术保护点】

1.一种堆空间分配方法,应用于堆管理端,其特征在于,包括:

2.根据权利要求1所述的堆空间分配方法,其特征在于,所述根据所述多个地址空间的起始地址生成的逻辑地址,包括:

3.根据权利要求2所述的堆空间分配方法,其特征在于,所述将所述多个地址空间按顺序进行拼接,包括:

4.根据权利要求1所述的堆空间分配方法,其特征在于,所述以便于所述迭代器将根据所述多个地址空间的起始地址生成的逻辑地址发送至所述负载,包括:

5.根据权利要求1所述的堆空间分配方法,其特征在于,所述方法还包括:

6.根据权利要求1所述的堆空间分配方法,其特征在于,所述方法还包括:

7.根据权利要求1或5所述的堆空间分配方法,其特征在于,所述状态信息包括:已分配状态和未分配状态。

8.一种堆空间分配装置,其特征在于,包括:

9.一种电子设备,其特征在于,包括:

10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一权利要求所述的方法。

【技术特征摘要】

1.一种堆空间分配方法,应用于堆管理端,其特征在于,包括:

2.根据权利要求1所述的堆空间分配方法,其特征在于,所述根据所述多个地址空间的起始地址生成的逻辑地址,包括:

3.根据权利要求2所述的堆空间分配方法,其特征在于,所述将所述多个地址空间按顺序进行拼接,包括:

4.根据权利要求1所述的堆空间分配方法,其特征在于,所述以便于所述迭代器将根据所述多个地址空间的起始地址生成的逻辑地址发送至所述负载,包括:

5.根据权利要求1所述的堆空间分配...

【专利技术属性】
技术研发人员:刘志哲何昊阳江凯栾霜渐吕笑松贡建松
申请(专利权)人:拓维电子科技上海有限公司
类型:发明
国别省市:

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

1