linux应用中减少内存碎片

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/whuzm08/article/details/79807042
1.使用mem pool
一次性malloc一块大的内存,以后内存分配都从这块大内存中去分配,如何去管理这块内存就是mem pool该做的事情,其实它的原理类似于malloc的原理,只是这块大内存是固定的,不像malloc可以系统中去申请,所以管理上要比malloc简单,mem pool的实现有很多种,这里随便列举一两个:
但是这样在mem pool中又会产生碎片,但是该碎片不会影响到其他的模块或malloc,起到了碎片隔离的目的


2.使用obj pool
类似于slab分配器,由于是固定大小的obj分配器,所以在pool内不存在碎片
a)将slab.c移植到应用中
b)blockheap
c ) 其他的例子,如inode pool


由于需要预先分配一个pool,所以这种做法的缺点是浪费内存
展开阅读全文

没有更多推荐了,返回首页