Posts Tagged ‘tcmalloc’

October 20, 2013

  上一篇介绍了 TCMallocSysAllocator,处于最底层,该层负责直接和内核交互,申请和释放内存。紧邻 SysAllocator 的上一层,是 PageHeap,负责管理内存页面。
  TCMalloc 中的页面和 Linux 内核中的页面相似,事实上,组织方式也和内核接近。介绍 PageHeap 之前,先要介绍 Span,一个 Span 是一个或多个 Page,也是 PageHeap 管理的单元:

Tags: . 507 views
October 19, 2013

  TCMalloc 的全局分配器,处于 TCMalloc 的最底层,负责向操作系统申请和释放内存,接口有两个,定义在 src/system-alloc.h|.cc

1
2
3
extern void* TCMalloc_SystemAlloc(size_t bytes, size_t *actual_bytes,
                                  size_t alignment = 0);
extern bool TCMalloc_SystemRelease(void* start, size_t length);

  TCMalloc_SystemAlloc 的参数,除了要申请的大小 bytes,还有 actual_bytesalignment,因为对齐的需求,该接口可能分配大于 bytes 的内存,实际大小保存在 actual_bytesTCMalloc_SystemRelease 负责『释放』内存,至于释放为什么加引号,下面会提到。接下来,介绍下这两个接口的实现。

Tags: . 949 views
Page 1 of 11