我尝试了我认为是显而易见的事情,但是我无法让jemalloc生成堆配置文件输出文件。
设置:
jemalloc配置(编译时):
--prefix=/Users/kull/local --enable-prof CC=/Users/kull/toolchains/llvm-7.0.1/bin/clang CXX=/Users/kull/toolchains/llvm-7.0.1/bin/clang++
运行测试程序
export MALLOC_CONF="prof:true,prof_prefix:jeprof.out"
clang++ main.cpp -I/Users/kull/local/include -L/Users/kull/local/lib -Wl,-rpath,/Users/kull/local/lib -ljemalloc -lstdc++ -lpthread -DINTS=400000000000 -o main
测试程序:
#include <cstdio>
#include <cstdlib>
#include <jemalloc/jemalloc.h>
int main(int argc, char const* argv[]) {
for (int i = 0; i < 1000000; ++i) {
int* arr = new int[INTS];
arr[0] = 83493;
delete[] arr;
}
printf("\tDone.\n");
// Dump jemalloc allocator statistics to stderr.
je_malloc_stats_print(NULL, NULL, NULL);
return 0;
}
我看到转出了jemalloc统计信息(以验证我实际上正在运行jemalloc),但没有看到配置文件输出文件。如何使堆分析工作?