[发明专利]内存管理方法、装置、设备及存储介质有效
| 申请号: | 201810966811.5 | 申请日: | 2018-08-23 |
| 公开(公告)号: | CN109597683B | 公开(公告)日: | 2021-05-07 |
| 发明(设计)人: | 吴兆玉 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
| 地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 内存 管理 方法 装置 设备 存储 介质 | ||
本公开实施例公开了一种内存管理方法、装置、设备及存储介质。该方法包括:在满足预设条件时,获取全局变量的元素及占用内存;根据所述全局变量的元素,重新申请内存以对所述全局变量进行重建,并释放所述占用内存。本公开实施例挤掉了内存碎片,解决了内存不释放问题,程序运行过程中内存的增加不再超过增量数据带来的实际内存占用,避免了大量不符合预期的物理内存占用。
技术领域
本公开实施例涉及计算机技术,尤其涉及一种内存管理方法、装置、设备及存储介质。
背景技术
随着互联网技术和信息技术的发展,智能手机等终端设备几乎已经成为每个人必备的设备,用户通过智能手机可以查看各种信息,因此,很多应用为了满足用户的需求,向用户推荐新闻等各种信息。
随着业务发展和推送策略的日益复杂,信息推送系统的内存开始成为瓶颈。在信息推送系统的运行过程中,会不断添加新的用户数据或更新已有的数据,导致占用的物理内存逐渐增多,而且内存增量远超过实际增量数据应该使用的内存,即存在内存不释放问题。
发明内容
有鉴于此,本公开实施例提供一种内存管理方法、装置、设备及存储介质,以至少地解决上述问题。
第一方面,本公开实施例提供了一种内存管理方法,所述方法包括:
在满足预设条件时,获取全局变量的元素及占用内存;
根据所述全局变量的元素,重新申请内存以对所述全局变量进行重建,并释放所述占用内存。
可选的,在满足预设条件时,获取全局变量的元素及占用内存之前,还包括:
根据预设原则,将所述全局变量分为至少两个片段;
根据所述全局变量的元素,重新申请内存以对所述全局变量进行重建,并释放所述占用内存,包括:
重新申请内存对所述至少两个片段中的每个片段单独进行重建,并在一个片段重建完成后释放对应的重建前的占用内存。
可选的,重新申请内存对所述至少两个片段中的每个片段单独进行重建,并在一个片段重建完成后释放对应的重建前的占用内存,包括:
生成一个片段,作为重建片段,所述重建片段包括起始内存地址;
根据所述至少两个片段中每个片段中的元素,基于所述起始内存地址重新申请内存并将所述元素复制到重新申请的内存中,在一个片段中的所有元素复制完成后释放该片段对应的重建前的占用内存,并在所述重建片段中的元素符合所述预设原则时新生成一个重建片段。
可选的,还包括:
通过至少两个链表指针将所述至少两个片段串联成链表,所述至少两个链表指针指向对应的片段的内存地址;
在一个片段重建完成后释放对应的重建前的占用内存之后,还包括:
根据重建后的片段的内存地址,修改对应的链表指针所指向的内存地址。
可选的,还包括:
当获取到新元素时,将所述新元素写入所述链表的最后一个片段。
可选的,所述链表的读写机制包括:最后一个片段外的其他片段不允许写入新元素,允许对已有元素的更新。
可选的,还包括:
在读写最后一个片段时进行加锁,并在读写完毕时释放锁。
可选的,还包括:
当所述最后一个片段符合预设原则时,新生成一个片段,并通过对应的链表指针将新生成的片段追加到链表尾部,所述新生成的片段用于接收后续写入的元素。
可选的,所述预设原则包括预设元素数量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810966811.5/2.html,转载请声明来源钻瓜专利网。





