TCMalloc:线程缓存Malloc
来源:互联网 发布:腾讯代理吃鸡会优化吗 编辑:程序博客网 时间:2024/05/21 23:39
TCMalloc:线程缓存Malloc
一. TCMalloc的内存管理框架
由上图可知:TCMalloc通过三级缓存来实现对内存的管理:ThreadCache,CentralCache和PageHeap。ThreadCache和CentralCache通过批量的内存块进行交互,CentralCache和PageHeap通过SPAN进行交互,如此形成了相互联系的整体。
二. TCMalloc简介
TCMalloc赋予每个线程一个线程局部cache。小的分配可以从线程局部缓存中获得。对象从中央数据结构移到线程局部缓存,周期性的垃圾回收用于将线程局部缓存中的内存迁移到中央数据结构中。
TCMalloc将大小<32k的对象视为小对象,大于32k的对象视为大对象。大对象直接从central heap中分配,使用页级分配器(内存区域中一个页是4k大小),一个大的对象通常是页对齐并占据一个完整的页数目。
对于小对象的请求,可以直接从线程局部缓存中获取,如果线程局部缓存中没有空闲内存,则从central heap中一次性获取一连串小对象。TCMalloc对于小内存,按8的整数次倍分配,对于大内存,按4k的整数次倍分配。
当某个线程缓存当缓存中所有对象的总共大小超过2MB的时候,会对它进行垃圾回收。垃圾回收阈值会自动根据线程数量的增加而减小,这样就不会因为程序有大量线程而过度浪费内存。
如图所示:
更细节可以参考:http://google-perftools.googlecode.com/svn/trunk/doc/tcmalloc.html
- TCMalloc:线程缓存Malloc
- TCMalloc:线程缓存的Malloc
- TCMalloc:线程缓存的Malloc
- TCMalloc:线程缓存的Malloc
- TCMalloc:线程缓存的Malloc
- TCMalloc:线程缓存的Malloc
- TCMalloc:线程缓存的Malloc [Webkit有其应用]
- TCMalloc:线程缓存的Malloc [Webkit有其应用]
- TCMalloc:线程缓冲的Malloc
- TCMalloc:线程缓冲的Malloc
- TCMalloc:线程缓冲的Malloc
- TCMalloc:线程缓存的Malloc(特指用在游戏服务器上)
- TCMalloc与Malloc对比
- TCMalloc与Malloc对比
- TCMalloc : Thread-Caching Malloc
- TCMalloc : Thread-Caching Malloc
- TCMalloc源码阅读(二)--线程局部缓存ClassSize分析
- tcmalloc源码阅读(三)---ThreadCache分析之线程局部缓存
- 2013年 模拟赛 java 本科 B组蓝桥杯
- 指针重出
- win8 UI bug
- TwoSAT模版(LRJ)
- 排序
- TCMalloc:线程缓存Malloc
- ASP.NET MVC案例教程(六)(2)
- Oracle 之 创建表与修改表详解
- jQuery笔记
- 使用m2e创建maven项目出错及解决办法
- posix多线程内存泄漏
- Opengl---gluLookAt函数详解
- C# LRUCache缓存类
- ASP.NET MVC案例教程(七)