我正在尝试使用不同的分配策略来分析应用程序以比较其性能。
使用tcmalloc时我可以毫无困难地分析它,但是如何使用libc的分配函数对其进行分析?实际上,启用gperftool的堆分析器需要使用trait MyTrait {}
impl<T> MyTrait for T
where
T: Fn() -> &'static str,
{
}
impl<T> MyTrait for T
where
T: Fn(u8) -> u8,
{
}
fn myf<F>(_fun: Box<F>)
where
F: MyTrait,
{
}
fn main() {
myf(Box::new(|i: u8| i + 2))
}
标志¹,但这会导致tcmalloc被用作分配策略。
答案 0 :(得分:0)
如何使用libc的分配函数对其进行分析?
注意:这个要求有点奇怪:它不像你的应用程序突然开始使用更多或更少的堆内存,或者当你从tcmalloc切换到GLIBC malloc时改变它的分配模式或站点。
来自https://gperftools.github.io/gperftools/heapprofile.html:
堆分析需要使用libtcmalloc。可以在堆分析器的未来版本中删除此要求,并将堆分析器分离到其自己的库中。
所以你可以
我不知道现有的任何现有GLIBC等效物。