1

opt.lg_prof_interval (ssize_t) r- [--enable-prof] 内存配置文件转储之间的平均间隔(日志基数 2),以分配活动的字节数为单位。转储之间的实际间隔可能是零星的,因为分散的分配计数器用于避免同步瓶颈。配置文件被转储到根据模式 ...i.heap 命名的文件中,其中由 opt.prof_prefix 选项控制。默认情况下,间隔触发的配置文件转储被禁用(编码为 -1)。

医生说。
我的选择是export MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17 (每 1GB 采样一个堆转储)

我感到困惑的是,转储是应用程序启动到现在之间的完整转储,或者只是在最后一次转储之间的完整转储。
在此处输入图像描述

我检查了转储中的大小,发现它很小。
那么可能是答案2吗?
我找到了一些个人资料文章,但没有提及。

为此我怎么能看到内存减少?(base有效吗?我不这么认为......)

4

1 回答 1

2

简短的回答是:(1) - 字节计数器是从应用程序开始的。

长答案:不需要“应用程序启动”事件,也可以从应用程序内部调用 mallctl("prof.reset")。

您可以检查这个(相当旧的)线程以进行澄清(阅读所有消息,而不仅仅是我引用的消息):http: //jemalloc.net/mailman/jemalloc-discuss/2015-November/001205.html

“为此,我怎么能看到内存减少?(基础有效吗?我不这么认为......)”

您应该使用--base 选项看到内存减少,在您的情况下为--base dump3。您将在 jeprof 报告中看到负数。

于 2018-12-27T01:30:18.237 回答