Ale*_*kov 6 c optimization memory-management
我有一个编程项目,大量使用malloc/free函数.它有三种类型的结构,具有非常高的动态性和大数量.通过这种方式,malloc和free被大量使用,每秒被称为数千次.可以用用户空间版本的SLAB替换标准内存分配来解决这个问题吗?这种算法有没有实现?
PS
如果你只有三种不同的话,那么你可以通过使用池分配器(定制或类似的boost::pool但是对于C)获得很大的好处.Doug Lea的基于binning的malloc将作为池分配器(在glibc中使用)的一个非常好的基础.
但是,您还需要考虑其他因素,例如多线程和内存重用(将分配对象,释放然后重新分配或仅分配然后释放?).从这个角度你可以检查tcmalloc(它是为极端分配,数量和内存使用而设计),nedmalloc或hoard.所有这些分配器都是开源的,因此可以轻松更改以适应您分配的对象的大小.