[发明专利]一种基于pagesize进行内存平移合并降低内存碎片的方法在审
申请号: | 202011602440.6 | 申请日: | 2020-12-29 |
公开(公告)号: | CN112612723A | 公开(公告)日: | 2021-04-06 |
发明(设计)人: | 赵伟;郭鹏;李连成;云亚娇 | 申请(专利权)人: | 天津南大通用数据技术股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 天津企兴智财知识产权代理有限公司 12226 | 代理人: | 李彦彦 |
地址: | 300384 天津市滨海新区高新区*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 pagesize 进行 内存 平移 合并 降低 碎片 方法 | ||
本发明创造提供了一种基于pagesize进行内存平移合并降低内存碎片的方法,在TCMalloc管理内存池的基础上,以page为单位对使用状态的内存,向低地址方向进行平移,填补中间的空闲状态内存,并释放后面的空闲状态内存,释放后的空闲内存处于地址连续的发生合并,从而降低内存碎片。本发明创造有益效果:使用状态的内存向低地址方向趋于紧凑,同时空闲状态的内存向高地址趋于紧凑并适时发生合并效果,从而降低整体内存池的碎片,提升内存使用效率。
技术领域
本发明创造属于网络优化领域,尤其是涉及一种基于pagesize进行内存平移合并降低内存碎片的方法。
背景技术
在引入TCMalloc机制(Thread-Cathing Malloc,即线程缓存的malloc)进行预分配的内存管理时,内存必须是按照固定的pagesize进行对齐,配置大小一般可设置4KB或8KB等内存页的整数倍,并以pagesize为单位进行管理(使用span管理指定数量的page),由于上层应用使用内存大小是随机的,最终会拿到不固定数量page的span,随着业务量增大和时间推移,伴随着span的多次申请和释放,必然会产生大量的以pagesize为单位的内存碎片。
发明创造内容
有鉴于此,本发明创造旨在提出一种基于pagesize进行内存平移合并降低内存碎片的方法,以解决上述问题中的不足之处。
为达到上述目的,本发明创造的技术方案是这样实现的:
一种基于pagesize进行内存平移合并降低内存碎片的方法,在TCMalloc管理内存池的基础上,以page为单位对使用状态的内存,向低地址方向进行平移,填补中间的空闲状态内存,并释放后面的空闲状态内存,释放后的空闲内存处于地址连续的发生合并,用于降低内存使用。
进一步的,内存平移合并的方法包括以下步骤:
A1、内存管理模块定义结构体,针对所有内存进行标记;
A2、使用链表管理步骤A1中标记的结构体对象,保存地址顺序由低到高;
A3、实用内存平移合并方法,平移使用状态内存,并将平移释放后的空闲内存与其它地址连续的空闲内存发生合并;
A4、每个使用状态的内存成功发生平移后,通知申请者更新所申请的内存地址。
进一步的,步骤A1中对所有内存进行标记的参数包括内存的大小、地址、申请者信息以及使用者信息。
进一步的,执行内存平移合并的方法用于保证在总空闲内存不变的情况下,通过合并一部分小的内存碎片生成较大的空闲内存。
进一步的,一种基于pagesize进行内存平移合并降低内存碎片的方法包括以下步骤:
S1、定位空闲内存首位地址A,此时下一个空闲内存为C;
S2、遍历实用内存地址B;
S3、判断遍历是否结束,未结束则判断空闲首位地址是否小于使用内存地址,不小于则返回步骤S2,小于则进行步骤S4;
S4、进行平移内存操作;
S5、判断内存是否有重叠,重叠则进行步骤S6,否则平移至A,A分割出新的首位空闲A并释放B后进行步骤S7;
S6、平移至A,并释放非重叠部分D;
S7、进行合并内存操作;
S8、判断内存是否重叠,重叠则C/D合并成新的空闲首位地址A,否则A/B/C合并成新的空闲首地址A,返回至步骤S2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津南大通用数据技术股份有限公司,未经天津南大通用数据技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011602440.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种空压机空气冷却系统的内部引气系统精确控制结构
- 下一篇:多工位输送线