System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及通信,具体涉及一种内存管理方法、装置、电子设备及存储介质。
技术介绍
1、物联网操作系统(operating system for internet of things,iot os)是指以操作系统内核,例如,实时操作系统(real-time operating system,rtos)、林纳斯系统(linux)等为基础,包含文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台。这类操作系统结构简单,功能完备,实时性强,主要面向物联网等轻量级嵌入式系统领域,需要很少的内核代码空间和数据存储空间(kb级别),拥有良好的实时性、可扩展性能。非常适用于轻量化嵌入式产品中,如智能插线板、智能音响、手表、蓝牙耳机和遥控器等产品。
2、针对物联网端侧设备内存资源较小、cpu主频较低等特点,物联网操作系统内存管理策略的选取显得尤为重要。目前物联网操作系统的常见内存管理策略有:顺序查找算法、伸缩分配器算法(slab算法)。
3、顺序查找算法在内存碎片较大时分配时间长且不确定。slab算法内存管理算法很好的利用内存池的思想解决了外部碎片的问题,但由于分配的内存大小固定,容易造成较大的内部碎片。
4、基于此,目前对于嵌入式物联网操作系统的内存管理效率低。
技术实现思路
1、本申请实施例提供一种内存管理方法、装置、电子设备及存储介质,用以解决嵌入式物联网操作系统的内存管理效率低的技术问题。
2、第一方面,
3、获取跳表的阈值节点,所述阈值节点为内存大于设定值的内存单元;
4、获取待插入所述跳表的目标内存块;
5、若所述目标内存块大于或等于所述阈值节点的内存,则将所述目标内存块插入所述跳表的最底层链表;
6、若所述目标内存块小于所述阈值节点的内存,则将所述目标内存块随机插入所述跳表的索引层链表。
7、在一个实施例中,所述获取跳表的阈值节点之后,所述方法还包括:
8、获取待查询内存;
9、若所述待查询内存大于或等于所述阈值节点的内存,则从所述阈值节点对应的目标索引节点开始遍历所述跳表的内存单元,直至查找到与所述待查询内存匹配的内存单元;
10、若所述待查询内存小于所述阈值节点的内存,则从所述跳表的最高层链表的表头索引节点开始遍历所述内存单元,直至查找到与所述待查询内存匹配的内存单元。
11、在一个实施例中,所述获取跳表的阈值节点之后,还包括:
12、确定一个所述目标索引节点,并将所述目标索引节点的指针指向所述阈值节点。
13、在一个实施例中,所述获取跳表的阈值节点之后,所述方法还包括:
14、获取待删除内存;
15、若所述待删除内存大于或等于所述阈值节点的内存,则从所述阈值节点对应的目标索引节点开始遍历所述跳表的内存单元,直至查找到与所述待删除内存匹配的内存单元,并删除与所述待删除内存匹配的内存单元;
16、若所述待删除内存小于所述阈值节点的内存,则从所述跳表的最高层链表的表头索引节点开始遍历所述内存单元,直至查找到与所述待删除内存匹配的内存单元,并删除与所述待删除内存匹配的内存单元。
17、在一个实施例中,所述将所述目标内存块插入所述跳表的最底层链表,包括:
18、获取所述目标内存块在所述跳表的最底层链表中的第一插入位置;
19、在所述第一插入位置创建一个新节点,并基于所述目标内存块的大小确定所述新节点的内存值;
20、获取所述新节点的前一节点和后一节点,将所述前一节点的指针指向所述新节点,以及将所述新节点的指针指向所述后一节点。
21、在一个实施例中,所述将所述目标内存块随机插入所述跳表的索引层链表,包括:
22、基于随机函数,获取所述目标内存块待插入的目标索引层;
23、获取所述目标内存块在所述目标索引层的第二插入位置,并在所述第二插入位置插入所述目标内存块。
24、在一个实施例中,采用跳表数据结构存储内存块,其中,所述跳表数据结构包括所述最底层链表、所述索引层链表以及所述阈值节点,所述内存块为空闲内存块。
25、第二方面,本申请实施例提供一种内存管理装置,包括:
26、第一获取模块,用于获取跳表的阈值节点,所述阈值节点为内存大于设定值的内存单元;
27、第二获取模块,用于获取待插入所述跳表的目标内存块;
28、第一插入模块,用于若所述目标内存块大于或等于所述阈值节点的内存,则将所述目标内存块插入所述跳表的最底层链表;
29、第二插入模块,用于若所述目标内存块小于所述阈值节点的内存,则将所述目标内存块随机插入所述跳表的索引层链表。
30、第三方面,本申请实施例提供一种电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面所述的内存管理方法的步骤。
31、第四方面,本申请实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面的内存管理方法。
32、本申请实施例提供的内存管理方法、装置、电子设备及存储介质,通过获取跳表的阈值节点,所述阈值节点为内存大于设定值的内存单元;获取待插入所述跳表的目标内存块;若所述目标内存块大于或等于所述阈值节点的内存,则将所述目标内存块插入所述跳表的最底层链表;若所述目标内存块小于所述阈值节点的内存,则将所述目标内存块随机插入所述跳表的索引层链表。本申请实施例通过在跳表中设置阈值节点,并基于阈值节点直接将较大的目标内存块插入最底层链表,提高了内存管理的效率。
本文档来自技高网...【技术保护点】
1.一种内存管理方法,其特征在于,包括:
2.根据权利要求1所述内存管理方法,其特征在于,所述获取跳表的阈值节点之后,所述方法还包括:
3.根据权利要求2所述内存管理方法,其特征在于,所述获取跳表的阈值节点之后,还包括:
4.根据权利要求1所述内存管理方法,其特征在于,所述获取跳表的阈值节点之后,所述方法还包括:
5.根据权利要求1所述内存管理方法,其特征在于,所述将所述目标内存块插入所述跳表的最底层链表,包括:
6.根据权利要求1所述内存管理方法,其特征在于,所述将所述目标内存块随机插入所述跳表的索引层链表,包括:
7.根据权利要求1所述内存管理方法,其特征在于,采用跳表数据结构存储内存块,其中,所述跳表数据结构包括所述最底层链表、所述索引层链表以及所述阈值节点,所述内存块为空闲内存块。
8.一种内存管理装置,其特征在于,包括:
9.一种电子设备,包括处理器和存储有计算机程序的存储器,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的内存管理方法的步骤。
...【技术特征摘要】
1.一种内存管理方法,其特征在于,包括:
2.根据权利要求1所述内存管理方法,其特征在于,所述获取跳表的阈值节点之后,所述方法还包括:
3.根据权利要求2所述内存管理方法,其特征在于,所述获取跳表的阈值节点之后,还包括:
4.根据权利要求1所述内存管理方法,其特征在于,所述获取跳表的阈值节点之后,所述方法还包括:
5.根据权利要求1所述内存管理方法,其特征在于,所述将所述目标内存块插入所述跳表的最底层链表,包括:
6.根据权利要求1所述内存管理方法,其特征在于,所述将所述目标内存块随机插入所述跳表的索引层链...
【专利技术属性】
技术研发人员:李坤明,吴昊,陆营川,贾景润,
申请(专利权)人:中移杭州信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。