System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 内存多维数据库中的多维模型的内存回收方法及装置制造方法及图纸_技高网

内存多维数据库中的多维模型的内存回收方法及装置制造方法及图纸

技术编号:40440871 阅读:6 留言:0更新日期:2024-02-22 23:03
本申请提供一种内存多维数据库中的多维模型的内存回收方法及装置,涉及数据处理技术领域,该方法包括:响应于接收到内存回收指令,确定目标内存块链表,其中,目标内存块链表中的内存块的节点类型均相同;从目标内存块链表中,确定第一目标内存块及第二目标内存块;将第一目标内存块对应的第一目标节点中的待转移数据拷贝到第二目标内存块中对应的第二目标节点中;在第一目标内存块中所述第一目标节点的数量等于第一阈值的情况下,将第一目标内存块确定为垃圾内存块,并判断当前是否结束节点拷贝;在确定继续进行节点拷贝的情况下,返回执行从目标内存块链表中,确定第一目标内存块及第二目标内存块的步骤,直至结束节点拷贝;将垃圾内存块进行释放。

【技术实现步骤摘要】

本申请涉及数据处理,尤其涉及一种基于内存多维数据库中的多维模型的内存回收方法及装置


技术介绍

1、随着计算机技术的发展,需要用到的内存数据也越来越多,通常为了便于内存数据的存储与管理,内存多维数据库也应用的越来越广泛。但是因为所有数据都常驻内存,对数据库内存资源的管理提出了更高的要求。内存多维数据库中占用内存最大的模块是多维立方体,也称多维数据模型,多维数据模型的数据存储逻辑上通常是按平衡多叉树形数据结构来组织。

2、相关技术中,在对多维模型中的数据进行管理时,通常需要从整个树形数据结构考虑。比如,现有的内存多维数据库提供了整体的拷贝释放的方法,也即将多维模型的现有树形数据结构中的所有有效数据插入到新的树形数据结构上,所有数据拷贝完成后释放原来的树形结构所占用的内存池。

3、这种整体拷贝释放回收方法的一个缺点是:会在回收过程中造成内存的增长,因为该方法需要在多维模型现有内存池的基础上,再整体拷贝一份模型数据到新的内存池后才能回收现有的内存池。回收过程中产生的内存增长基本等于回收前该模型的树形数据结构中的有效节点所占用内存。举例说明,如果一个模型占用10gb内存,其中有效节点占用内存7gb,则该模型回收过程中产生的内存增长会达到7gb,即该模型回收过程中的峰值内存占用会达到17gb(包括原内存池和新内存池);回收成功后会释放3gb内存给操作系统,回收成功后该模型占用7gb内存。

4、这种整体拷贝释放回收方法的另一个缺点是:灵活性较差,体现在内存回收具有原子性,即回收成功会释放全部垃圾节点所占内存,回收失败或终止则不会影响多维模型的内存占用。因为回收失败或终止意味着新内存池中的树形结构没有包含完整的数据,所以终止后仍然需要保留现有内存池,内存池大小和其中的废弃节点状态没有改变,造成回收失败。


技术实现思路

1、本申请提供一种内存多维数据库中的多维模型的内存回收方法及装置。

2、根据本申请的第一方面,提供一种内存多维数据库中的多维模型的内存回收方法,该方法包括:响应于接收到多维模型的内存回收指令,确定目标内存块链表,其中,所述目标内存块链表中的内存块的节点类型均相同;从所述目标内存块链表中,确定第一目标内存块及第二目标内存块;将所述第一目标内存块对应的第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中;在所述第一目标内存块中所述第一目标节点的数量等于第一阈值的情况下,将所述第一目标内存块确定为垃圾内存块,并判断当前是否结束节点拷贝;在确定继续进行节点拷贝的情况下,返回执行从所述目标内存块链表中,确定第一目标内存块及第二目标内存块以及在所述第一目标内存块中所述第一目标节点的数量等于第一阈值的情况下,将所述第一目标内存块确定为垃圾内存块,并判断当前是否结束节点拷贝的步骤,直至结束节点拷贝;基于节点地址重定位映射表中保存的所述第一目标节点的地址及所述第二目标节点的地址,将多维数据模型对应的数据树中节点的指针地址进行更新;将所述垃圾内存块进行释放。

3、在一些实施方式中,所述响应于接收到多维模型的内存回收指令,确定目标内存块链表,包括:基于所述多维数据模型中每个内存块链表的节点总数量及有效节点的数量,确定每个所述内存块链表的无效节点的数量;基于每个所述内存块链表的无效节点的数量、单个内存块的节点数量及单个节点占用内存量,确定每个所述内存块链表中的可释放垃圾内存量;将可释放垃圾内存量最多的内存块链表确定为目标内存块链表。

4、在一些实施方式中,所述基于每个所述内存块链表中无效节点的数量、单个内存块的节点数量及单个节点占用内存量,确定每个所述内存块链表中的可释放垃圾内存量,包括:将无效节点的数量大于单个内存块的节点数量的内存块链表确定为待操作内存块链表;基于每个所述待操作链表的无效节点的数量、单个内存块的节点数量及单个节点占用内存量,确定每个所述待操作内存块链表中的可释放垃圾内存量。

5、在一些实施方式中,所述从所述目标内存块链表中,确定第一目标内存块及第二目标内存块,包括:基于所述目标内存块链表中每个内存块的节点利用率和/或所在位置,确定第一目标内存块及第二目标内存块。

6、在一些实施方式中,所述将所述第一目标内存块对应的第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中,包括:针对任一所述第一目标内存块中的第一目标节点,将所述第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中;将所述第一目标内存块对应的第一状态位图及所述第二目标内存块对应的第二状态位图分别进行更新、将所述第一目标内存块及所述第二目标内存块中的有效节点数量分别进行更新;在所述第一目标内存块中第一目标节点的数量大于第一阈值的情况下,返回执行所述将所述第一目标内存块对应的第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中的步骤,直至所述第一目标内存块中第一目标节点的数量等于所述第一阈值。

7、在一些实施方式中,所述针对任一所述第一目标内存块中的第一目标节点,将所述第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中,包括:将所述第一目标内存块对应的第一状态位图中的第一个有效节点确定为第一目标节点;基于所述第二目标内存块中的节点数量及有效节点的数量,确定所述第二目标内存块的节点利用率;在所述第二目标内存块的节点利用率小于第二阈值的情况下,将所述第二目标内存块中第一个无效节点确定为第二目标节点;将所述第一目标内存块中的第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中;将所述第一目标节点的地址及所述第二目标节点的地址映射关系保存至节点地址重定位映射表中。

8、在一些实施方式中,所述在所述第一内存块中所述第一目标节点的数量等于第一阈值的情况下,将所述第一目标内存块确定为垃圾内存块,并判断当前是否结束节点拷贝,包括:确定当前所有所述垃圾内存块占用的累计内存量;在所述累计内存量与多维数据模型对应的总内存量间的比值大于第三阈值的情况下,确定结束节点拷贝;或者,在当前所述垃圾内存块占用的累计内存量大于第四阈值的情况下,确定结束节点拷贝;或者,确定当前节点拷贝持续的时长,在当前所述节点拷贝持续的时长大于第五阈值的情况下,确定当前结束节点拷贝。

9、在一些实施方式中,所述基于每个所述第一目标节点的地址及对应的所述第二目标节点的地址,将多维数据模型对应的数据树中节点的指针地址进行更新,包括:基于所述多维数据模型对应的数据树的任一树节点,在所述节点地址重定位映射表中进行查找;在所述节点地址重定位映射表中包含所述数据树的所述任一树节点的情况下,基于查找到的所述任一树节点对应的第一目标节点地址及第二目标节点地址,将所述任一树节点对应的指针地址值更新为第二目标节点地址。

10、在一些实施方式中,所述将所述垃圾内存块进行释放,包括:将所述垃圾内存块及所述垃圾内存块关联的状态位图所在的内存块进行释放。

11、根本文档来自技高网...

【技术保护点】

1.一种内存多维数据库中的多维模型的内存回收方法及装置,其特征在于,包括:

2.如权利要求1所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述响应于接收到多维模型的内存回收指令,确定目标内存块链表,包括:

3.如权利要求2所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述基于每个所述内存块链表中无效节点的数量、单个内存块的节点数量及单个节点占用内存量,确定每个所述内存块链表中的可释放垃圾内存量,包括:

4.如权利要求1所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述从所述目标内存块链表中,确定第一目标内存块及第二目标内存块,包括:

5.如权利要求1所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述将所述第一目标内存块对应的第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中,包括:

6.如权利要求5所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述针对任一所述第一目标内存块中的第一目标节点,将所述第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中,包括:

7.如权利要求1所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述在所述第一内存块中所述第一目标节点的数量等于第一阈值的情况下,将所述第一目标内存块确定为垃圾内存块,并判断当前是否结束节点拷贝,包括:

8.如权利要求6所述的基于内存多维数据库中的多维模型的内存回收方法,其特征在于,所述基于每个所述第一目标节点的地址及对应的所述第二目标节点的地址,将多维数据模型对应的数据树中节点的指针地址进行更新,包括:

9.如权利要求1-8中任一所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述将所述垃圾内存块进行释放,包括:

10.一种内存多维数据库中的多维模型的内存回收装置,其特征在于,包括:

...

【技术特征摘要】

1.一种内存多维数据库中的多维模型的内存回收方法及装置,其特征在于,包括:

2.如权利要求1所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述响应于接收到多维模型的内存回收指令,确定目标内存块链表,包括:

3.如权利要求2所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述基于每个所述内存块链表中无效节点的数量、单个内存块的节点数量及单个节点占用内存量,确定每个所述内存块链表中的可释放垃圾内存量,包括:

4.如权利要求1所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述从所述目标内存块链表中,确定第一目标内存块及第二目标内存块,包括:

5.如权利要求1所述的内存多维数据库中的多维模型的内存回收方法,其特征在于,所述将所述第一目标内存块对应的第一目标节点中的待转移数据拷贝到所述第二目标内存块中对应的第二目标节点中,包括:

6.如权利要求5所述的内...

【专利技术属性】
技术研发人员:屈恩刘庆龙
申请(专利权)人:北京元年科技股份有限公司
类型:发明
国别省市:

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

1