获取jemalloc中每个内存分配的bin大小

时间:2017-01-23 05:06:23

标签: c++ memory-management jemalloc

我运行一个使用jemalloc作为内存分配器的c ++程序,它将大块预分成预定义大小的小块(即1,2,4,8,......字节)

即使我要求110字节的内存分配,它也会返回一个容量为128字节的内存。

在我的程序中,我跟踪动态分配的内存量(具有高度不同的大小)并限制线程的内存分配以避免OutOfMemory崩溃。

但是,由于请求的大小与授予的实际大小之间存在差异,我无法准确计算动态分配的字节数。

是否有任何“jemalloc”API接收请求大小作为输入并提供实际分配大小作为输出?

由于

1 个答案:

答案 0 :(得分:2)

根据文档,您可以使用malloc_usable_size()并传递已分配的指针。

  

malloc_usable_size函数返回ptr指向的分配的可用大小。返回值可能大于分配期间请求的大小。 malloc_usable_size函数不是就地重新分配的机制;相反,它仅作为内省工具提供。请求的分配大小与malloc_usable_size报告的大小之间的任何差异都不应该依赖,因为这种行为完全取决于实现。

更多信息: