Ruby 2.6.5 与 jemalloc

Ruby 2.6.5 with jemalloc

我已经使用 jemalloc 从源代码构建并安装了 rub 2.6.5。但是,当我检查它是否存在时,我没有看到条目。还有什么我应该做的吗?

ubuntu:~$ uname -a
Linux ip-10-0-3-198 4.15.0-1032-aws #34-Ubuntu SMP Thu Jan 17 15:18:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
ubuntu:~$ ./configure --enable-shared --with-jemalloc
ubuntu:~$ make
ubuntu:~$ make install

这导致:

ubuntu:~$ ruby -r rbconfig -e "puts RbConfig::CONFIG['LIBS']"
-lm 

部署后跟踪内存使用情况与没有安装 jemalloc 的类似配置的服务器相比,我也没有看到下降。

我不确定我需要做什么才能让 jemalloc 工作。

谢谢!

尝试:

puts RbConfig::CONFIG['MAINLIBS']

并在输出中检查 -ljemalloc

此行为最近发生了变化(准确地说是在 2.6.x 中)。

出于某种原因,接受的答案对我 (Heroku) 不起作用,但是这个:

MALLOC_CONF=stats_print:true ruby -e "exit"

成功了。

如果您有一些统计输出,则表示它正在运行。

来源:https://github.com/gaffneyc/heroku-buildpack-jemalloc/issues/5#issuecomment-499932026

对于使用 LD_PRELOAD 而不是直接构建 ruby 的人,更完整的答案是:

RbConfig::CONFIG['MAINLIBS'].include?("jemalloc") || ENV['LD_PRELOAD'].include?("jemalloc")

当然,这还不足以判断 jemalloc 是否真的有效,至于公认的答案!