TCmalloc学习

TCmalloc是Google的内存分配器,用于提升C和C++代码的内存管理性能。它通过本地线程缓存优化小对象分配,减少了锁的使用,尤其在多线程环境下表现出色。TCmalloc在分配和释放内存时采用了不同策略,如按8的倍数分配小内存,超过2MB的线程缓存会触发垃圾收集。在释放内存时,它会尝试合并Span并归还给上一级缓存甚至操作系统。
摘要由CSDN通过智能技术生成

目录

 TCmalloc简介

 TCMalloc内部结构

TCMalloc 的工作模式

tcmalloc申请内存流程

tcmalloc释放内存流程


 TCmalloc简介

TCMalloc 是 Google 自定义的 c 的 malloc () 和 c + + 操作符 new 的实现,用于 c 和 c + + 代码中的内存分配。TCMalloc 将 c 的 malloc () 和 c + + 操作符 new 的内部实现替换为 TCMalloc 的实现,开发者只需编译链接 TCMalloc 的静态库或动态库即可,无需改动任何与内存分配有关的代码。

TCMalloc 通常被用于提高内存分配的性能,实现了高效的内存管理。在与glibc中的内存分配器ptmalloc2作比较:

  • tcmalloc分配一次内存的时间更快
  • tcmalloc优化了对小对象的存储,需要更少的空间
  • tcmalloc特别在多线程方面做了优化,一方面是对于小对象(<32k)的分配基本不存在锁,内存资源竞争,另一方面是对大对象(>=32k)使用了细粒度、高效的自旋锁。
  • tcmalloc分配给本地线程的内存资源,在长时间空闲的情况下会被回收,供其他线程使用,提高了多线程时内存利用率,不会浪费内存,这一点ptmalloc2无法做到。

粒度解释:“粒度”表示的是精确程度问题。粗粒度角度描述一个系统,是关注系统中大的组件;细粒度角度描述一个系统是从组成大组件的小组件,或者更小组件的角度认识系统。
“粒度”此处是用来描述一个系统,或者对比多个系统的术语,它是一个相对的概念。

说明:glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值