内存碎片的整理方法、装置、设备及存储介质与流程

文档序号:35871929发布日期:2023-10-28 06:35阅读:69来源:国知局
内存碎片的整理方法、装置、设备及存储介质与流程

本技术涉及计算机,特别涉及一种内存碎片的整理方法、装置、设备及存储介质。


背景技术:

1、在图形渲染的过程中,图形处理器(graphics processing unit,gpu)的内存中会存储与图形渲染相关的渲染数据,这会导致在gpu的内存中出现内存碎片。

2、相关技术中,计算机设备在进行gpu的内存碎片整理时,首先会找出内存的始端和末端之间的n个空闲区块。若n个空闲区块中的两个空闲区块在地址上不连续,即两个空闲区块之间存在已分配区块,且两个空闲区块中存在容量不小于该已分配区块的目标区块,计算机设备会将该已分配区块中的数据迁移至目标区块,从而得到相邻的两个空闲区块。计算机设备会循环执行上述步骤,直至无法通过整理得到相邻的两个空闲区块。之后,计算机设备将全部相邻的两个空闲区块进行合并,从而完成内存碎片整理。

3、采用上述方案对内存碎片进行整理,可能出现内存中仍然存在大量不连续的空闲区块的情况,这会导致内存中的空闲区块无法被充分利用。


技术实现思路

1、本技术提供了一种内存碎片的整理方法、装置、设备及存储介质,可以扩大内存中可利用的空闲区块的容量,实现充分利用内存中的空闲区块。所述技术方案如下:

2、根据本技术的一方面,提供了一种内存碎片的整理方法,所述方法包括:

3、获取内存中的尾部空闲区块之前的n个空闲区块,所述尾部空闲区块是所述内存的各空闲区块中位于尾部的空闲区块,n为正整数;

4、获取所述内存中的尾部非空闲区块,所述尾部非空闲区块包括所述内存中所述尾部空闲区块之前的一个区块或连续的多个区块,所述尾部非空闲区块包括至少一个已分配区块;

5、在所述n个空闲区块中确定目标空闲区块,所述目标空闲区块的容量不小于所述尾部非空闲区块中的所述已分配区块的容量;

6、将所述尾部非空闲区块中的数据迁移至所述目标空闲区块中。

7、根据本技术的另一方面,提供了一种内存碎片的整理装置,所述装置包括:

8、获取模块,用于获取内存中的尾部空闲区块之前的n个空闲区块,所述尾部空闲区块是所述内存的各空闲区块中位于尾部的空闲区块,n为正整数;

9、所述获取模块,用于获取所述内存中的尾部非空闲区块,所述尾部非空闲区块包括所述内存中所述尾部空闲区块之前的一个区块或连续的多个区块,所述尾部非空闲区块包括至少一个已分配区块;

10、确定模块,用于在所述n个空闲区块中确定目标空闲区块,所述目标空闲区块的容量不小于所述尾部非空闲区块中的所述已分配区块的容量;

11、迁移模块,用于将所述尾部非空闲区块中的数据迁移至所述目标空闲区块中。

12、在一个可选的设计中,所述获取模块,用于:

13、按照所述内存的尾部至头部的顺序,获取连续的m个已分配区块,m为正整数;

14、所述确定模块,用于:

15、在所述n个空闲区块中,确定容量不小于所述m个已分配区块的容量的所述目标空闲区块。

16、在一个可选的设计中,所述获取模块,用于:

17、以所述尾部空闲区块的前一个区块作为起点,向所述内存的头部遍历所述内存中的区块;

18、在遍历得到的第i个区块为所述已分配区块的情况下,响应于遍历得到的第i+1个区块为所述已分配区块,获取所述第i+1个区块作为所述m个已分配区块中的区块;

19、在遍历得到的所述第i个区块为所述已分配区块的情况下,响应于遍历得到的所述第i+1个区块为所述空闲区块,完成获取所述m个已分配区块,所述m个已分配区块包括所述第i个区块,i为正整数。

20、在一个可选的设计中,所述装置还包括:

21、计算模块,用于在获取到所述m个已分配区块中的第j个区块的情况下,将所述第j个区块的容量累加至计算区块容量中,以更新所述计算区块容量;

22、其中,所述计算区块容量是根据已获取到的所述m个已分配区块中各区块的容量的和确定的,j为正整数。

23、在一个可选的设计中,所述确定模块,用于:

24、响应于第j次更新所述计算区块容量,在所述n个空闲区块中确定是否存在容量不小于所述第j次更新的所述计算区块容量的空闲区块;

25、响应于所述n个空闲区块中存在容量不小于所述第j次更新的所述计算区块容量的空闲区块,继续执行遍历获取所述m个已分配区块的步骤和更新所述计算区块容量的步骤,以及执行确定所述目标空闲区块的步骤;

26、响应于所述n个空闲区块中不存在容量不小于所述第j次更新的所述计算区块容量的空闲区块,停止执行遍历获取所述m个已分配区块的步骤和更新所述计算区块容量的步骤,根据第j-1次更新的所述计算区块容量所对应的所述m个已分配区块,在所述n个空闲区块中确定所述目标空闲区块,j-1为正整数。

27、在一个可选的设计中,所述确定模块,用于:

28、响应于第j-1次更新所述计算区块容量,在所述n个空闲区块中确定容量不小于所述第j-1次更新的所述计算区块容量的候选空闲区块;

29、响应于所述第j次更新所述计算区块容量,确定所述候选空闲区块的容量是否不小于所述第j次更新的所述计算区块容量;

30、响应于所述候选空闲区块的容量不小于所述第j次更新的所述计算区块容量,继续执行遍历获取所述m个已分配区块的步骤和更新所述计算区块容量的步骤,以及执行比较更新的所述计算区块容量和所述候选空闲区块的容量的步骤;

31、响应于所述候选空闲区块的容量小于所述第j次更新的所述计算区块容量,执行在所述n个空闲区块中确定是否存在容量不小于所述第j次更新的所述计算区块容量的空闲区块的步骤。

32、在一个可选的设计中,所述n个空闲区块中各空闲区块在所述内存中的位置和容量以红黑树的数据结构存储;所述确定模块,用于:

33、通过所述红黑树,确定容量大于所述尾部非空闲区块中的所述已分配区块的容量,且容量最小的所述目标空闲区块。

34、在一个可选的设计中,所述装置还包括:

35、接收模块,用于接收内存碎片整理指令,所述内存碎片整理指令包括碎片整理容量,所述碎片整理容量用于指示在处理一帧图像帧数据的过程中整理的内存碎片的容量;

36、所述确定模块,用于在处理所述一帧图像帧数据的过程中,响应于整理的所述已分配区块的容量小于所述碎片整理容量,继续执行整理所述内存碎片的步骤;

37、所述确定模块,用于在处理所述一帧图像帧数据的过程中,响应于整理的所述已分配区块的容量不小于所述碎片整理容量,确定完成整理所述内存碎片。

38、在一个可选的设计中,所述内存碎片存在于gpu的内存中。

39、根据本技术的另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的内存碎片的整理方法。

40、根据本技术的另一方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上方面所述的内存碎片的整理方法。

41、根据本技术的另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的内存碎片的整理方法。

42、本技术提供的技术方案带来的有益效果至少包括:

43、通过将内存中的尾部非空闲区块中的数据迁移至尾部空闲区块之前的空闲区块中,能够实现将尾部非空闲区块整理为空闲区块,从而与尾部空闲区块形成连续的空闲区块,可扩大内存中可利用的空闲区块的容量,实现充分利用内存中的空闲区块。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1