stu*_*uck 6 c linux heap gcc http-headers
我不熟悉Linux堆的分配方式.
我每秒多次调用malloc()/ free(),总是使用相同的大小(大约有10个结构,每个都是固定大小).除了初始化时间,我的记忆都没有长时间分配.
这被认为是标准堆的不良形式吗?(我相信有人会问'你用的是什么堆?' - '呃.标准的静态堆'..意思是我不确定.)
我是应该使用空闲列表还是堆容许大量相同的分配.我试图平衡可读性和性能.
有什么工具可以帮助我衡量吗?
R..*_*R.. 11
首先,除非你已经测量了内存使用量的问题,否则不要考虑使用自定义分配器.这是过早优化的最糟糕形式之一.
同时,即使你遇到问题,比自定义分配器更好的解决方案是找出你为什么分配和释放对象这么多,并解决造成它的设计问题.
为了解决您的具体问题,glibc的分配器基于dlmalloc算法,该算法在碎片方面几乎是最优的.唯一可以让它严重破坏内存的方法是不可避免的方式:通过在交替中分配具有完全不同的生命周期的对象,例如分配大量对象但只释放其他对象.我认为你将很难制定出一种分配模式,这种分配模式会使总内存使用量低于池...