【技术实现步骤摘要】
一种基于tcmalloc和内存预分配的内存管理碎片改善方法
本专利技术创造属于数据库领域,尤其是涉及一种基于tcmalloc和内存预分配的内存管理碎片改善方法。
技术介绍
tcmalloc全称为Thread-CathingMalloc,即线程缓存的malloc,是gperftools的一部分,用于实现高效的多线程内存管理,以替代系统的内存分配相关函数。在一些基于C++开发的数据库及其它服务中,为了提高内存使用效率,采用了大块内存预分配的机制,即内存池,避免了反复的执行malloc/free、new/delete等操作,并引入了tcmalloc的内存管理功能模块,进一步提升了内存使用效率。但是随着并发处理和业务积累,根据熵增原理模型,由于内存使用逐步增大并细化,内存池中的内存会逐渐碎片化,可用的大块内存会越来越少,在一些极端的情况下,即使内存总空闲量远远大于单次申请量,但是却由庞大的内存碎片组成,并不满足实际需求,进而导致内存申请失败,严重的则导致业务申请失败甚至服务宕机。专利技术创造内容有鉴于 ...
【技术保护点】
1.一种基于tcmalloc和内存预分配的内存管理碎片改善方法,其特征在于:应用层进行内存释放,将内存返回给内存池后被释放的内存进行内存合并;/n执行所述内存合并的方法包括:/nS1、读取释放前内存的一个地址指针;/nS2、判断是否获取成功,获取成功则进行步骤S3,否则进行步骤S4;/nS3、将前一个内存从空闲链表中删除后,与当前内存地址合并后进行步骤S4;/nS4、读取释放内存的后一个地址指针;/nS5、判断是否获取成功,获取成功则进行步骤S6,否则进行步骤S7;/nS6、将后一个内存从空闲链表中删除,与当前内存地址合并后进行步骤S7;/nS7、将合并后的内存存入空闲链表,合并结束。/n
【技术特征摘要】
1.一种基于tcmalloc和内存预分配的内存管理碎片改善方法,其特征在于:应用层进行内存释放,将内存返回给内存池后被释放的内存进行内存合并;
执行所述内存合并的方法包括:
S1、读取释放前内存的一个地址指针;
S2、判断是否获取成功,获取成功则进行步骤S3,否则进行步骤S4;
S3、将前一个内存从空闲链表中删除后,与当前内存地址合并后进行步骤S4;
S4、读取释放内存的后一个地址指针;
S5、判断是否获取成功,获取成功则进行步骤S6,否则进行步骤S7;
S6、将后一个内存从空闲链表中删除,与当前内存地址合并后进行步骤S7;
S7、将合并后的内存存入空闲链表,合并结束。
2.根据权利要求1所述的一种基于tcmalloc和内存预分配的内存管理碎片改善方法,其特征在于:进行内存管理时,引入的tcmalloc方法,在使用span-page管理空闲内存时,内部采用normal和returned双链表形式,原有returned链表用于将之前申请的内存按照一定的频率和机制释...
【专利技术属性】
技术研发人员:赵伟,郭鹏,李连成,云亚娇,
申请(专利权)人:天津南大通用数据技术股份有限公司,
类型:发明
国别省市:天津;12
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。