[发明专利]内存管理方法、装置、设备及存储介质有效
| 申请号: | 201810966811.5 | 申请日: | 2018-08-23 |
| 公开(公告)号: | CN109597683B | 公开(公告)日: | 2021-05-07 |
| 发明(设计)人: | 吴兆玉 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
| 地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 内存 管理 方法 装置 设备 存储 介质 | ||
1.一种内存管理方法,其特征在于,所述方法包括:
根据预设原则,将全局变量分为至少两个片段;
通过至少两个链表指针将所述至少两个片段串联成链表,所述至少两个链表指针指向对应的片段的内存地址;
在满足预设条件时,获取全局变量的元素及占用内存;
生成一个片段,作为重建片段,所述重建片段包括起始内存地址;
根据所述至少两个片段中每个片段中的元素,基于所述起始内存地址重新申请内存并将所述每个片段中的元素复制到重新申请的内存中,在一个片段中的所有元素复制完成后释放该片段对应的重建前的占用内存,根据重建后的片段的内存地址,修改对应的链表指针所指向的内存地址;并在重建片段中的元素不符合所述预设原则时,将下一片段中的元素复制到紧邻所述重建片段中的最后一个元素的内存地址的内存中,在所述重建片段中的元素符合所述预设原则时新生成一个重建片段;
当获取到新元素时,将所述新元素写入所述链表的最后一个片段;
其中,所述链表的读写机制包括:最后一个片段外的其他片段不允许写入新元素且不允许删减元素,允许对已有元素的更新。
2.根据权利要求1所述的方法,其特征在于,还包括:
在读写最后一个片段时进行加锁,并在读写完毕时释放锁。
3.根据权利要求1所述的方法,其特征在于,还包括:
当所述最后一个片段符合预设原则时,新生成一个片段,并通过对应的链表指针将新生成的片段追加到链表尾部,所述新生成的片段用于接收后续写入的元素。
4.根据权利要求1所述的方法,其特征在于,所述预设原则包括预设元素数量。
5.一种内存管理装置,其特征在于,所述装置包括:
全局变量划分模块,用于根据预设原则,将全局变量分为至少两个片段;
链表形成模块,用于通过至少两个链表指针将所述至少两个片段串联成链表,所述至少两个链表指针指向对应的片段的内存地址;
数据获取模块,用于在满足预设条件时,获取全局变量的元素及占用内存;
全局变量重建模块,用于根据所述全局变量的元素,重新申请内存以对所述全局变量进行重建,并释放所述占用内存;
新元素写入模块,用于当获取到新元素时,将所述新元素写入所述链表的最后一个片段;
所述全局变量重建模块包括:
重建单元,用于生成一个片段,作为重建片段,所述重建片段包括起始内存地址;根据所述至少两个片段中每个片段中的元素,基于所述起始内存地址重新申请内存并将所述每个片段中的元素复制到重新申请的内存中,在一个片段中的所有元素复制完成后释放该片段对应的重建前的占用内存;并在重建片段中的元素不符合所述预设原则时,将下一片段中的元素复制到紧邻所述重建片段中的最后一个元素的内存地址的内存中,在所述重建片段中的元素符合所述预设原则时新生成一个重建片段;
所述全局变量重建模块还包括:
链表指针修改单元,用于根据重建后的片段的内存地址,修改对应的链表指针所指向的内存地址;
其中,所述链表的读写机制包括:最后一个片段外的其他片段不允许写入新元素且不允许删减元素,允许对已有元素的更新。
6.一种内存管理设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4任一所述的内存管理方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-4任一所述的内存管理方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810966811.5/1.html,转载请声明来源钻瓜专利网。





