本发明专利技术公开了一种内存管理方法,该方法包括:申请获得存储单元;设定所述存储单元的结构,使所述存储单元包含邻接单元指针和下一跳指针;设定所述存储单元所归属的内存资源的结构,使所述内存资源包含邻接内存指针、活跃指针和计数元素;初始化所述新的内存资源所包含的存储单元的邻接单元指针,使所述新的内存资源的所包含的存储单元通过邻接单元指针相连;将申请到的所述新的内存资源添加到已经存在的内存资源链表中;初始化所述新的内存资源,将所述新的内存资源所包含的存储单元全部赋值为0;调用所述新的内存资源进行存储。采用本技术方案,能够灵活地扩展和释放内存,从而达到高效率地使用内存资源的目的。
【技术实现步骤摘要】
本专利技术涉及计算机存储领域,尤其涉及。
技术介绍
Hash 一般又翻译作“散列”或“哈希”,是一种存储结构,大数据存储和大流量网络数据分析等涉及快速查找的场景一般都会使用哈希存储。使用哈希存储的一般不是单一的值,所以在使用哈希存储的场景中,除了哈希单元本身外,一般还需要存放于另一片内存区域的另外的存储单元。每个应用场景对存储单元的使用状况不是恒定的,需要根据实际情况进行动态变化和调整,例如,在大并发大流量的情况下,存储单元多占用一些内存,在空闲的情况下,存储单元少占用一些内存。但是,目前很多哈希的应用场景涉及到的内存管理方法,一般都是使用固定大小的存储单元,这种方法的缺点是显而易见的:不易扩展:因为使用的是固定大小的存储空间,即使在高压情况下,也会因为存储单元不能扩展无法申请到新的可用空间而不能对新的请求或应答作出有效处理;资源浪费:因为使用的是固定大小的存储空间,即使在空闲、大量内存单元都处于非使用状态的情况下,也会因为无法释放而导致大量资源的浪费。
技术实现思路
有鉴于此,本专利技术实施例提出,以实现对内存的有效管理。本专利技术实施例提供了,包括:申请获得存储单元;设定所述存储单元的结构,使所述存储单元包含用于指向下一个空闲的存储单元的邻接单元指针和用于指向下一个处于使用状态的存储单元下一跳指针;设定所述存储单元所归属的内存资源的结构,使所述内存资源包含用于指向下一个内存资源的邻接内存指针、用于指向所述内存资源首个可用存储单元的活跃指针和记录内存资源使用次数的计数元素;初始化所述新的内存资源所包含的存储单元的邻接单元指针,使所述新的内存资源的所包含的存储单元通过邻接单元指针相连;将申请到的所述新的内存资源添加到已经存在的内存资源链表中;初始化所述新的内存资源,将所述新的内存资源所包含的存储单元全部赋值为O ;调用所述新的内存资源进行存储。通过采用上述技术方案,当发现系统内存不足时,能够自动为系统申请新的存储单元,从而可以在大使用量的情况下达到灵活扩展内存的目的,有效地处理大并发大流量等突发场景。【附图说明】通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为本专利技术实施例一提供的的流程示意图;图2为本专利技术实施例二提供的的流程示意图;图3为本专利技术实施例三提供的的流程示意图;图4为本专利技术实施例四提供的的流程示意图;【具体实施方式】下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。实施例一图1为本专利技术实施例一提供的的流程示意图。本实施例的方法具体用于数据存储空间不足时需对存储空间进行扩展的情况。该方法可以由系统来执行,也可以由服务器来执行。如图1所示,该方法包括:S110、申请获得存储单元。S120、设定所述存储单元的结构,使所述存储单元包含用于指向下一个空闲的存储单元的邻接单元指针和用于指向下一个处于使用状态的存储单元下一跳指针;设定所述存储单元所归属的内存资源的结构,使所述内存资源包含用于指向下一个内存资源的邻接内存指针、用于指向所述内存资源首个可用存储单元的活跃指针和记录内存资源使用次数的计数元素。所述存储单元的结构可以为buf {source,val,next_alive,prev,next},其中,source为内存资源指针,指向当前存储单元所归属的内存资源;val为真正存储的对象;next_alive为邻接单元指针,指向下一个空闲的存储单元;prev为前一跳指针,指向前一个也在使用状态的存储单元;next为下一跳指针,指向后一个也在使用状态的存储单元。所述内存资源的结构可以为source {buf,next,alive,use},其中,buf为存储单元指针,指向该内存资源所包含的存储单元的开始地址;next为邻接内存指针,指向下一个内存资源;alive为活跃指针,指向当前内存资源首个可用的存储单元;USe为计数元素,记录内存资源的使用次数,每使用一个内存资源里面的存储单元,计数元素use加I。S130、初始化所述新的内存资源所包含的存储单元的邻接单元指针,使所述新的内存资源的所包含的存储单元通过邻接单元指针相连。初始化所述新的内存资源所包含的存储单元的邻接单元指针具体可以为:首先申请若干个存储单元并让内存资源里的存储单元指针指向存储单元的开始地址,然后使用每个存储单元里面的邻接单元指针将所有申请的存储单元前后连接起来。S140、将申请到的所述新的内存资源添加到已经存在的内存资源链表中。将申请到的所述新的内存资源添加到已经存在的内存资源链表中可以通过内存资源的指针来实现,即将使用中的已存在内存资源的邻接内存指针指向该新的内存资源。可以把申请到的所述新的内存资源添加到已经存在的内存资源链表的起始位置、结尾位置或是链表中间的任意位置。优选的,可以把申请到的所述新的内存资源添加到已经存在的内存资源链表的结尾位置,即让已经存在的内存资源的邻接内存指针指向申请到的所述新的内存资源。把新的内存资源添加到已存在内存资源链表的结尾处不会打乱已经存在的内存资源链表的存储顺序,添加比较方便快捷,可以减少添加时系统所需运行的步骤。S150、初始化所述新的内存资源,将所述新的内存资源所包含的存储单元全部赋值为O。向系统申请新的内存资源时,内存资源里面的原始值有可能是比较杂乱的,所以需要初始化新申请的内存资源,将新申请的内存资源所包含的存储单元全部赋值为0,以方便后续的调用和存储。S160、调用所述新的内存资源进行存储。调用所述新的内存资源进行存储可以为:系统通过新的内存资源的活跃指针调用该内存系统当前第1页1 2 3 本文档来自技高网...
【技术保护点】
一种内存管理方法,其特征在于,包括:申请获得存储单元;设定所述存储单元的结构,使所述存储单元包含用于指向下一个空闲的存储单元的邻接单元指针和用于指向下一个处于使用状态的存储单元下一跳指针;设定所述存储单元所归属的内存资源的结构,使所述内存资源包含用于指向下一个内存资源的邻接内存指针、用于指向所述内存资源首个可用存储单元的活跃指针和记录内存资源使用次数的计数元素;初始化所述新的内存资源所包含的存储单元的邻接单元指针,使所述新的内存资源所包含的存储单元通过邻接单元指针相连;将申请到的所述新的内存资源添加到已经存在的内存资源链表中;初始化所述新的内存资源,将所述新的内存资源所包含的存储单元全部赋值为0;调用所述新的内存资源进行存储。
【技术特征摘要】
【专利技术属性】
技术研发人员:梁润强,麦剑,黄劲聪,曾宪力,史伟,刘杰,梁永堂,
申请(专利权)人:广东睿江科技有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。