[email protected],欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点 个人座右铭: 1.没有横空出世,只要厚积一定发。 2.你可以学历不高,你可以不上学,但你不能不学习 一、内存池设计思路 1.内存池解决的问题(mallo...">

当前位置:网站首页>内存池原理一(基于整块)

内存池原理一(基于整块)

2022-06-10 17:15:00 QQ851301776

创作人QQ:851301776,邮箱:[email protected],欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!

个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习

一、内存池设计思路

1.内存池解决的问题(malloc/free)

(1)不利于内存管理

(2)内存碎片厉害

(3)程序容易出现内存泄漏,最终产生内存溢出

2.内存池设计的做法(4K)

(1)伙伴算法

        分配:把4K,按照2的n次方的方式,从0开始分配成:1/2/4/8/16/32/64/128/256/512/1K/2K这些块,核心思维:把整块变成散块

使用:比如需要129个字节:就会把256这个块再次拆分成:128/64/32/16/8/4/2/1,

        合并:把相邻相同大小的两块合并起来,和下一块放到一起。需要第一个条件两块相邻,第二个条件两块必须一样大。

        释放:把小块变大块,统一释放

(2)slab

        这里不解释,可以查看nginx使用slab的内存池部分(slab核心是把:比如一个4K的页,全部变成4/8/16(数字只是举例), 这种小块)

原网站

版权声明
本文为[QQ851301776]所创,转载请带上原文链接,感谢
https://mrleef.blog.csdn.net/article/details/125215764