[发明专利]GC程序语言中哈希表的实现方法及装置有效
申请号: | 202010436194.5 | 申请日: | 2020-05-21 |
公开(公告)号: | CN111694559B | 公开(公告)日: | 2023-07-21 |
发明(设计)人: | 向阳;金捷;苑超;李灼锋 | 申请(专利权)人: | 北京云杉世纪网络科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F16/22;G06F9/50;G06F12/02 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李文清 |
地址: | 100083 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | gc 程序语言 中哈希表 实现 方法 装置 | ||
本发明实施例提供一种GC程序语言中哈希表的实现方法及装置,方法包括:若哈希表的矩阵中最后一个对象位于矩阵中对象块数组的最后位置,则创建一个新对象块数组,并将新对象块数组插入到所述矩阵的最后一行的下方;获取新对象块数组位于矩阵中的行号,将哈希表的索引数组中与行号相同的下标位置指向新对象块数组,并将新对象块数组的起始位置的元素初始化为待插入对象;若哈希表的矩阵中的最后一个对象不位于对象块数组的最后位置,则将最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。本发明实施例降低了内存申请和释放的频率,降低了堆内存中对象的数量,使得哈希表的性能得到显著提升。
技术领域
本发明属于计算机数据结构技术领域,尤其涉及一种GC程序语言中哈希表的实现方法及装置。
背景技术
在GC(Garbage Collection,垃圾回收)程序语言中,对象的高频构造和销毁会由于周期性的垃圾回收引发巨大的程序执行开销。例如在Golang语言中,高频构造和销毁的对象会在堆空间上占据大量的零散内存空间,并在每隔2分钟的垃圾回收发生时导致整个程序长时间锁定无法执行堆内存访问指令。
哈希表是程序设计语言中重要的数据结构,如Golang的map和Java的HashMap等,用于实现对象的快速查找。在GC程序语言中,哈希表中对象的高频插入和删除会导致大量堆空间上的对象被频繁创建和销毁,周期性执行的GC操作锁定整个堆空间时也会由于对象数量庞大而长时间锁定,进而导致哈希表此时的查询性能显著降低。
由于哈希表是一个非常经典的数据结构,因此其实现方式在各种语言中大同小异。简单来讲,通过一个数组H存储哈希值对应的链表表头,该数组称之为哈希桶。插入、删除、查询操作会先通过对对象的Key进行哈希计算,定位到在H数组中的下标,并扫描该下标位置指向的链表判断是否存在该对象及是否需要增删该对象。
以Golang为例,它使用传统的哈希表实现方法,在向哈希表插入对象时,会在堆空间上生成一个对象;删除一个对象时会从堆空间中标记该对象已不再被哈希表使用。由于堆空间中的GC会定期检查堆空间所有对象,若没有被任何代码使用则将其最终释放。
在高频插入和删除操作时,对象的申请和释放使得GC会面对一个由大量零碎对象构成的堆空间,对哈希表的频繁操作会显著影响哈希表的整体性能。
发明内容
为克服上述现有的哈希表实现方法对哈希表频繁操作影响哈希表性能的问题或者至少部分地解决上述问题,本发明实施例提供一种GC程序语言中哈希表的实现方法及装置。
根据本发明实施例的第一方面,提供一种GC程序语言中哈希表的实现方法,包括:
若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组,并将所述新对象块数组插入到所述矩阵的最后一行的下方;
获取所述新对象块数组位于所述矩阵中的行号,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组,并将所述新对象块数组的起始位置的元素初始化为待插入对象;
若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置,则将所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。
具体地,若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组的步骤之前还包括:
计算所述待插入对象的Key值的哈希值,根据所述哈希值定位所述待插入对象在哈希表的哈希桶中的位置;
遍历访问所述哈希表的链表的所述位置,若所述位置不存在所述待插入对象,则判断所述哈希表的矩阵中的最后一个对象是否位于所述对象块数组的最后位置。
具体地,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组的步骤还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京云杉世纪网络科技有限公司,未经北京云杉世纪网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010436194.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种仿石砖及其涂装施工方法
- 下一篇:一种市政道路下水管道防堵系统