JeMalloc 不创建内存泄漏转储
Posted
技术标签:
【中文标题】JeMalloc 不创建内存泄漏转储【英文标题】:JeMalloc does not create memory leak dump 【发布时间】:2018-12-07 09:39:21 【问题描述】:我需要有关使用 JeMalloc 进行内存分析的帮助。
我做以下事情:
git clone https://github.com/jemalloc/jemalloc
cd jemalloc
./autogen.sh --enable-perf
make dist
make
sudo make install
export MALLOC_CONF=prof_leak:true,lg_prof_sample:0,prof_final:true
export LD_PRELOAD=/usr/local/Cellar/jemalloc/5.1.0/lib/libjemalloc.dylib
然后我运行我的应用程序:
./some_executed_file
这个二进制文件100%会使用jemalloc 因为当我打电话时
typedef struct
char *cur;
char *end;
MallocStatus;
static void GetJemallocStatus(void *mstat_arg, const char *status)
MallocStatus *mstat = reinterpret_cast<MallocStatus *>(mstat_arg);
size_t status_len = status ? strlen(status) : 0;
size_t buf_size = (size_t)(mstat->end - mstat->cur);
if (!status_len || status_len > buf_size)
return;
snprintf(mstat->cur, buf_size, "%s", status);
mstat->cur += status_len;
MallocStatus mstat;
const unsigned int kMallocStatusLen = 1000000;
std::unique_ptr<char[]> bufnew char[kMallocStatusLen + 1];
mstat.cur = buf.get();
mstat.end = buf.get() + kMallocStatusLen;
je_malloc_stats_print(GetJemallocStatus, &mstat, "");
stats->append(buf.get());
我看到了 JeMalloc 统计数据。
关于 https://github.com/jemalloc/jemalloc/wiki/Use-Case:-Leak-Checking
我做的一切都是正确的 - 但我仍然没有看到 jeprof 转储文件来分析内存泄漏。
提前致谢。
【问题讨论】:
【参考方案1】:尝试将prof:true,prof_active:true
添加到您的MALLOC_CONF,并使用--enable-prof
标志而不是--enable-perf
。
【讨论】:
以上是关于JeMalloc 不创建内存泄漏转储的主要内容,如果未能解决你的问题,请参考以下文章