内存管理方法及装置制造方法及图纸

技术编号:33788282 阅读:58 留言:0更新日期:2022-06-12 14:44
本公开涉及一种用于扩展虚拟局域网的内存管理方法、装置、电子设备及计算机可读介质。该方法包括:在内存中创建并初始化动态数组;根据用户请求创建扩展虚拟局域网元素并将所述扩展虚拟局域网元素加入动态数组;定时获取所述动态数组的长度和所述动态数组中扩展虚拟局域网元素的个数;基于所述动态数组的长度与所述动态数组中扩展虚拟局域网元素的个数之间的关系对所述内存中的动态数组进行管理。本申请涉及的用于扩展虚拟局域网的内存管理方法、装置、电子设备及计算机可读介质,能够对使用扩展虚拟局域网技术的电子设备中的内存进行动态回收,提高内存利用率。提高内存利用率。提高内存利用率。

【技术实现步骤摘要】
内存管理方法及装置


[0001]本申请涉及计算机信息处理领域,具体而言,涉及一种用于扩展虚拟局域网的内存管理方法、装置、电子设备及计算机可读介质。

技术介绍

[0002]近年来,云计算、虚拟化等相关技术的发展以及软件定义网络的提出,对二层局域网在质量以及范围上的要求越来越高,传统的VLAN技术已经难以满足要求。
[0003]为解决大规模组网存在的虚拟机通信问题,VMWare等公司提出了一种硬件overlay技术,即扩展虚拟局域网VXLAN。VXLAN是一种隧道封装技术,通过将二层报文封装在UDP头中,封装后的报文能在IP核心网络中透明传输,并通过虚拟网络标识符提供最大16M的用户隔离能力。
[0004]具体到软件层面,对于每一个虚拟网络标识符,程序中都要在内部维护与其相关的若干信息,比如转发域ID以及隧道ID等,因此程序内部需要管理最大16M组信息。为了管理这些信息,就需要开辟相应大小的内存。大体上有两种内存管理方式。
[0005]一种是静态内存管理方式。即程序刚启动就申请了储存所有VXLAN相关信息所需要的内存。不过此时大多数VXLAN还没有创建,因此有相当大的内存空间没有得到有效利用,是一种浪费。
[0006]另一种是动态内存管理方式。即存放VXLAN相关信息的内存空间大小不是固定不变的,是可以动态调整的。这样可以尽量避免浪费,节约内存空间。
[0007]在所述
技术介绍
部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0008]有鉴于此,本申请提供一种用于扩展虚拟局域网的内存管理方法、装置、电子设备及计算机可读介质,能够对使用扩展虚拟局域网技术的电子设备中的内存进行动态回收,提高内存利用率。
[0009]本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
[0010]根据本申请的一方面,提出一种用于扩展虚拟局域网的内存管理方法,该方法包括:在内存中创建并初始化动态数组;根据用户请求创建扩展虚拟局域网元素并将所述扩展虚拟局域网元素加入动态数组;定时获取所述动态数组的长度和所述动态数组中扩展虚拟局域网元素的个数;基于所述动态数组的长度与所述动态数组中扩展虚拟局域网元素的个数之间的关系对所述内存中的动态数组进行管理。
[0011]在本申请的一种示例性实施例中,在内存中创建并初始化动态数组,包括:在内存中创建一预设长度的动态数组;初始化所述动态数组。
[0012]在本申请的一种示例性实施例中,初始化所述动态数组,包括:创建全局变量;基
于init_darray函数进行初始化;为所述动态数组设置自旋锁。
[0013]在本申请的一种示例性实施例中,根据用户请求创建扩展虚拟局域网元素并将所述扩展虚拟局域网元素加入动态数组,包括:根据用户请求调用insert_darray函数创建扩展虚拟局域网元素;在所述动态数组中的元素个数等于所述动态数组的长度时,重新创建一动态数组并转移当前动态数组中的数据和所述扩展虚拟局域网元素。
[0014]在本申请的一种示例性实施例中,重新创建一动态数组并转移当前动态数组中的数据和所述扩展虚拟局域网元素,包括:基于当前动态数组的长度申请堆区空间;基于所述堆区空间创建新动态数组;将当前动态数组中的数据存储到新动态数组中;将所述扩展虚拟局域网元素插入所述新动态数组尾部。
[0015]在本申请的一种示例性实施例中,重新创建一动态数组并转移当前动态数组中的数据和所述扩展虚拟局域网元素,还包括:基于struct darray函数中的自旋锁对所述动态数组中的数据进行加锁和解锁操作。
[0016]在本申请的一种示例性实施例中,定时获取所述动态数组的长度和所述动态数组中扩展虚拟局域网元素的个数,包括:创建并启动定时器线程;基于所述定时器线程定时获取获取所述动态数组的长度和所述动态数组中扩展虚拟局域网元素的个数。
[0017]在本申请的一种示例性实施例中,基于所述动态数组的长度与所述动态数组中扩展虚拟局域网元素的个数之间的关系对所述内存中的动态数组进行管理,包括:在所述动态数组的长度大于所述动态数组中扩展虚拟局域网元素的个数时,重新创建一动态数组并转移当前动态数组中的数据。
[0018]在本申请的一种示例性实施例中,重新创建一动态数组并转移当前动态数组中的数据,包括:基于所述动态数组中扩展虚拟局域网元素的个数申请堆区空间;基于所述堆区空间创建新动态数组;将当前动态数组中的数据存储到新动态数组中。
[0019]根据本申请的一方面,提出一种用于扩展虚拟局域网的内存管理装置,该装置包括:创建模块,用于在内存中创建并初始化动态数组;加入模块,用于根据用户请求创建扩展虚拟局域网元素并将所述扩展虚拟局域网元素加入动态数组;定时模块,用于定时获取所述动态数组的长度和所述动态数组中扩展虚拟局域网元素的个数;管理模块,用于基于所述动态数组的长度与所述动态数组中扩展虚拟局域网元素的个数之间的关系对所述内存中的动态数组进行管理。
[0020]根据本申请的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
[0021]根据本申请的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
[0022]根据本申请的用于扩展虚拟局域网的内存管理方法、装置、电子设备及计算机可读介质,通过在内存中创建并初始化动态数组;根据用户请求创建扩展虚拟局域网元素并将所述扩展虚拟局域网元素加入动态数组;定时获取所述动态数组的长度和所述动态数组中扩展虚拟局域网元素的个数;基于所述动态数组的长度与所述动态数组中扩展虚拟局域网元素的个数之间的关系对所述内存中的动态数组进行管理的方式,能够对使用扩展虚拟局域网技术的电子设备中的内存进行动态回收,提高内存利用率。
[0023]应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
[0024]通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025]图1是根据一示例性实施例示出的一种用于扩展虚拟局域网的内存管理方法及装置的系统框图。
[0026]图2是根据一示例性实施例示出的一种用于扩展虚拟局域网的内存管理方法的流程图。
[0027]图3是根据另一示例性实施例示出的一种用于扩展虚拟局域网的内存管理方法的流程图。
[0028]图4是根据另一示例性实施例示出的一种用于扩展虚拟局域网的内存管理方法的流程图。
[0029]图5是根据一示例性实施例示出的一种用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于扩展虚拟局域网的内存管理方法,其特征在于,包括:在内存中创建并初始化动态数组;根据用户请求创建扩展虚拟局域网元素并将所述扩展虚拟局域网元素加入所述动态数组;定时获取所述动态数组的长度和所述动态数组中扩展虚拟局域网元素的个数;基于所述动态数组的长度与所述动态数组中扩展虚拟局域网元素的个数之间的关系对所述内存中的动态数组进行管理。2.如权利要求1所述的方法,其特征在于,在内存中创建并初始化动态数组,包括:在内存中创建一预设长度的动态数组;初始化所述动态数组。3.如权利要求2所述的方法,其特征在于,初始化所述动态数组,包括:创建全局变量;基于init_darray函数进行初始化;为所述动态数组设置自旋锁。4.如权利要求1所述的方法,其特征在于,根据用户请求创建扩展虚拟局域网元素并将所述扩展虚拟局域网元素加入动态数组,包括:根据用户请求调用insert_darray函数创建扩展虚拟局域网元素;在所述动态数组中的元素个数等于所述动态数组的长度时,重新创建一动态数组并转移当前动态数组中的数据和所述扩展虚拟局域网元素。5.如权利要求4所述的方法,其特征在于,重新创建一动态数组并转移当前动态数组中的数据和所述扩展虚拟局域网元素,包括:基于当前动态数组的长度申请堆区空间;基于所述堆区空间创建新动态数组;将当前动态数组中的数据存储到新动态数组中;将所述扩展虚拟局域网元素插入所述新动态数组尾部。6.如权利要求5所述的方法,其特征在于,重新创建一动态数组并转移当前...

【专利技术属性】
技术研发人员:肖童星刘小兵
申请(专利权)人:杭州迪普科技股份有限公司
类型:发明
国别省市:

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

1