仿TCMalloc高并发内存池项目介绍

TCMalloc介绍

官方介绍

TCMalloc介绍
Thread-Caching Malloc(TCMalloc),即线程缓存的malloc,是一种高性能的内存分配器,由Google开发并作为gperftools项目的一部分。TCMalloc旨在提高多线程程序的内存分配性能,通过减少锁争用和优化内存分配/释放操作来实现。

TCMalloc的核心思想是在每个线程中实现一个局部的内存缓存(ThreadCache),这样线程可以先从自己的缓存中快速分配和释放内存,而不是每次都直接与全局内存分配器交互,从而减少了锁的使用和上下文切换,提高了并发性能。

以下是TCMalloc的一些关键特点:

  1. 线程局部缓存:每个线程拥有自己的缓存区域,用于存储小对象,这样可以快速地分配和释放内存,而无需频繁获取全局锁。
  2. 中央缓存(CentralCache):当线程的局部缓存耗尽时,TCMalloc会从中央缓存分配一批内存对象,以此来补充线程缓存。
  3. 页面堆(PageHeap):是TCMalloc的后端组件,负责从操作系统获取内存并将其切割成合适大小的内存块供中央缓存使用。
  4. 大对象直接分配:对于大于某个阈值的对象(通常是256KB),TCMalloc会直接从PageHeap分配,而不经过中央缓存或线程缓存。
  5. 按大小分类(Size Classes):TCMalloc定义了多种大小类别(size classes),每个类别对应特定大小的对象,以优化内存使用效率。
  6. 垃圾回收:TCMalloc会定期进行垃圾回收,将不活跃的内存返回给操作系统,以避免内存泄漏。

TCMalloc适用于需要高性能内存分配的场景,尤其是在多线程服务器应用程序中。它通过减少锁的使用和优化内存访问模式,提高了内存分配的速度和程序的整体性能。

参考资料:

  • https://github.com/google/tcmalloc
  • https://zhuanlan.zhihu.com/p/678175054

核心技术

C/C++、链表、哈希桶、操作系统内存管理、单例模式、多线程、互斥锁

什么是内存池?

demo:定长内存池

高并发内存池项目框架

threadcache模块

centralcache模块

pagecache模块

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值