
tcmalloc
文章平均质量分 85
壊壊壊人噢
勤劳的码农
展开
-
TCMalloc介绍
动机 TCMalloc是一个非常快速的内存管理库,它比glibc 2.3的malloc以及其他的一些内存管理库都要更高效。ptmalloc2在2.8GHz P4机器上执行一次malloc/free(分配释放小的内存块)大约耗时300纳秒。相同的执行操作,TCMalloc的实现只需要大约50纳秒。 TCMalloc同时也为多线程编程减少了锁的竞争,对于小块内存分配,TCMalloc实际上转载 2013-11-06 19:38:39 · 1293 阅读 · 0 评论 -
tcmalloc源码阅读(三)---ThreadCache分析之线程局部缓存
线程局部缓存 tcmalloc采用线程局部存储技术为每一个线程创建一个ThreadCache,所有这些ThreadCache通过链表串起来。 线程局部缓存有两种实现: 1. 静态局部缓存,通过__thread关键字定义一个静态变量。 2. 动态局部缓存,通过pthread_key_create,pthread_setspecific,pthread_getspecific来实现。 静转载 2013-11-06 20:18:24 · 2088 阅读 · 0 评论 -
TCMalloc源码阅读(四)--ThreadCache分析之空闲内存链表
前面几篇博文中已经描述了TCMalloc将内存从小到大划分成很多个固定大小的内存块,将每种大小的空闲内存块使用链表管理起来。本文就来分析下ThreadCache中空闲链表的实现。 TreadCache::FreeList的代码如下: [cpp] view plaincopy class FreeList { private:转载 2013-11-06 20:49:46 · 1318 阅读 · 0 评论 -
TCMalloc源码阅读(二)--线程局部缓存ClassSize分析
TCMalloc小对象分配机制 首先我们回顾下TCMalloc文档的小对象分配机制。文档中说明TCMalloc给每个线程都保存一个缓存池,缓存池里有各种大小的内存对象。小内存分配过程如下: 1. 将要分配的大小映射到对应的对齐对象。 2. 在当前线程的局部缓存中查找该对齐对象链表。 3. 如果该链表不为空,删除链表第一个节点并返回给调用者。 问题 1. 小对象是如何划分的?转载 2013-11-06 20:07:05 · 1126 阅读 · 0 评论 -
TCMalloc源码阅读(一)
分类: C++ linux2013-03-21 11:02 405人阅读 评论(1) 收藏 举报 目录(?)[+] 前言 最近一直在折腾内存管理,先是自己实现了一个非常简单的内存管理,但是和malloc对比测试之后发现效率相差甚多。偶然在网上发现TCMalloc,下载下来之后与malloc做了简单的对比测试,惊奇的发现tcmalloc的速度果然如它自己所述,比转载 2013-11-06 19:57:00 · 2889 阅读 · 0 评论