GC程序语言中哈希表的实现方法及装置制造方法及图纸

技术编号:25707934 阅读:36 留言:0更新日期:2020-09-23 02:55
本发明专利技术实施例提供一种GC程序语言中哈希表的实现方法及装置,方法包括:若哈希表的矩阵中最后一个对象位于矩阵中对象块数组的最后位置,则创建一个新对象块数组,并将新对象块数组插入到所述矩阵的最后一行的下方;获取新对象块数组位于矩阵中的行号,将哈希表的索引数组中与行号相同的下标位置指向新对象块数组,并将新对象块数组的起始位置的元素初始化为待插入对象;若哈希表的矩阵中的最后一个对象不位于对象块数组的最后位置,则将最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。本发明专利技术实施例降低了内存申请和释放的频率,降低了堆内存中对象的数量,使得哈希表的性能得到显著提升。

【技术实现步骤摘要】
GC程序语言中哈希表的实现方法及装置
本专利技术属于计算机数据结构
,尤其涉及一种GC程序语言中哈希表的实现方法及装置。
技术介绍
在GC(GarbageCollection,垃圾回收)程序语言中,对象的高频构造和销毁会由于周期性的垃圾回收引发巨大的程序执行开销。例如在Golang语言中,高频构造和销毁的对象会在堆空间上占据大量的零散内存空间,并在每隔2分钟的垃圾回收发生时导致整个程序长时间锁定无法执行堆内存访问指令。哈希表是程序设计语言中重要的数据结构,如Golang的map和Java的HashMap等,用于实现对象的快速查找。在GC程序语言中,哈希表中对象的高频插入和删除会导致大量堆空间上的对象被频繁创建和销毁,周期性执行的GC操作锁定整个堆空间时也会由于对象数量庞大而长时间锁定,进而导致哈希表此时的查询性能显著降低。由于哈希表是一个非常经典的数据结构,因此其实现方式在各种语言中大同小异。简单来讲,通过一个数组H存储哈希值对应的链表表头,该数组称之为哈希桶。插入、删除、查询操作会先通过对对象的Key进行哈希计算,定位到本文档来自技高网...

【技术保护点】
1.一种GC程序语言中哈希表的实现方法,其特征在于,包括:/n若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组,并将所述新对象块数组插入到所述矩阵的最后一行的下方;/n获取所述新对象块数组位于所述矩阵中的行号,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组,并将所述新对象块数组的起始位置的元素初始化为待插入对象;/n若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置,则将所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。/n

【技术特征摘要】
1.一种GC程序语言中哈希表的实现方法,其特征在于,包括:
若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组,并将所述新对象块数组插入到所述矩阵的最后一行的下方;
获取所述新对象块数组位于所述矩阵中的行号,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组,并将所述新对象块数组的起始位置的元素初始化为待插入对象;
若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置,则将所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。


2.根据权利要求1所述的GC程序语言中哈希表的实现方法,其特征在于,若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组的步骤之前还包括:
计算所述待插入对象的Key值的哈希值,根据所述哈希值定位所述待插入对象在哈希表的哈希桶中的位置;
遍历访问所述哈希表的链表的所述位置,若所述位置不存在所述待插入对象,则判断所述哈希表的矩阵中的最后一个对象是否位于所述对象块数组的最后位置。


3.根据权利要求1所述的GC程序语言中哈希表的实现方法,其特征在于,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组的步骤还包括:
若所述索引数组的长度小于或等于所述新对象块数组位于所述矩阵中的行号,则创建一个新的索引数组;其中,所述新的索引数组的长度大于原来的索引数组的长度;
将原来的索引数组的内容复制到所述新的索引数组中,并将所述新的索引数组中与所述行号相同的下标位置指向所述新对象块数组。


4.根据权利要求1-3任一所述的GC程序语言中哈希表的实现方法,其特征在于,还包括:
计算待删除对象的Key值的哈希值,根据所述待删除对象的Key值的哈希值定位所述待删除对象在哈希表的哈希桶中的位置;
遍历访问所述待删除对象在所述哈希表的链表的所述位置,若所述位置存在所述待删除对象,则将所述待删除对象和所述矩阵中的最后一个对象互换;
若所述待删除对象互换后的位置为所述对象块数组的起始位置,则销毁所述待删除对象互换后所在的对象块数组。


5.根据权利要求4所述的GC程序语言...

【专利技术属性】
技术研发人员:向阳金捷苑超李灼锋
申请(专利权)人:北京云杉世纪网络科技有限公司
类型:发明
国别省市:北京;11

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

1