基础组件之内存池

内存池技术用于解决内存碎片问题,通过链表化或2^n分配法结合红黑树等方法提高内存利用率。文章介绍了内存碎片的产生原因、Linux下内存分配过程以及内存池如何减少内存碎片,探讨了链表化内存池的优缺点,并讨论了大内存块向小内存块分离的挑战。
摘要由CSDN通过智能技术生成

内存池技术

操作系统在运行进程的过程中,会产生内存碎片,降低了内存的使用率。内存池技术就是为了解决/减少内存碎片的一种方法,内部底层的具体实现根据不同业务场景使用不要的方式,以下是一种好理解的方式,供大家一起学习。

内存碎片

产生的原因&过程

内存碎片分为内部内存碎片和外部内存碎片。我们一般说的内存碎片指的是外部内存碎片。外部内存碎片指的是操作系统连续malloc出来的内存中间有free部分,而这些free出来的部分暂时无法重新被使用。

Linux下运行一个进程的内存分配的过程

在这里插入图片描述
进程运行时,操作系统先将代码和全局数据、静态数据加载到代码段和数据段中;然后开始读取代码一步步执行,遇到局部变量操作系统会在栈中开辟对应的内存空间,遇到malloc申请的内存会在堆中开辟相应大小的空间。

解决方法——内存池技术

链表化

将堆的内存空间分成多段大小相同的内存块,存放在链表结构中:

struct MemNode{
   
	void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值