首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JeMalloc不会创建内存泄漏转储

JeMalloc不会创建内存泄漏转储
EN

Stack Overflow用户
提问于 2018-12-07 17:39:21
回答 1查看 1.1K关注 0票数 1

我需要使用JeMalloc进行内存分析的帮助。

我做以下事情:

代码语言:javascript
复制
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 

然后我运行我的应用程序:

代码语言:javascript
复制
./some_executed_file

这个二进制文件将100%使用jemalloc,因为当我调用

代码语言:javascript
复制
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[]> buf{new 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转储文件来分析内存泄漏。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-04-06 06:59:48

尝试将prof:true,prof_active:true添加到MALLOC_CONF中,并使用--enable-prof标志而不是--enable-perf

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53666828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档