内存管理
文章平均质量分 80
时光耗子_hzh
码农
展开
-
内存管理(一) ptmalloc基础知识
本文讨论了:1.ptmalloc的简单概念2.各种chunk3.bin数组以及brk和mmap 1.ptmalloc的简单概念 glibc在开始的时候malloc是不支持多线程的,但是在glibc_2.3x中集成了ptmalloc2,也就是平常使用的malloc。这就实现了对多线程编程的支持。本文将讨论ptmalloc的整个malloc(),free原创 2017-05-06 18:57:19 · 1924 阅读 · 0 评论 -
内存管理(二)ptmalloc的分配回收…
1. 本文将讨论:2. ptmalloc的分配和释放在系统里的操作3. ptmalloc的初始化4. 子线程的malloc和free5. ptmalloc的内存暴增以及解决思路6. 内存池的优缺点 ptmalloc的分配和释放在系统里的操作 本文以32系统为例。 Glibc分配算法如下:l 小于等于 64 字节:用 pool 算原创 2017-05-06 18:57:22 · 651 阅读 · 0 评论 -
内存管理(三)tcmalloc1 内存分配及源码剖析
本来打算花一天时间看看tcmalloc就算结束了。但是在网上找博客的时候发现,100个人有101钟不同的解释,完全没有公论。一怒之下,剖源码! tcmalloc是对ptmalloc的升级版。和ptmalloc相比,tcmalloc对于小块内存的速度要比ptmalloc快得多,并且相对于每一个内存块分配都需要8B,tcmalloc对于细节的优化ptmalloc做得好。tcma原创 2017-05-07 15:24:18 · 876 阅读 · 0 评论 -
内存管理(四)tcmalloc2 内存释放及源码剖析
在上一篇博文里提到了可以从未分配完的span里继续分配内存。那么,释放的时候怎么找到对应的内存呢。Page heap一共保存着两个map,pagemap_记录着某一内存页对应着哪一个span,pagemap_cache记录着某一内存页对应哪一个sizeclass。Pagemap_的底层是radix-tree. 现在来谈谈内存释放。具体分为小块内存释放和大块内存释放。 内原创 2017-05-07 15:30:43 · 1099 阅读 · 0 评论