Spring 引导应用程序不使用 jemalloc

Spring boot application not using jemalloc

我正在尝试找出内存泄漏问题。我正在关注 this 文章并尝试使用 jemalloc

接下来的步骤是:

export LD_PRELOAD=/usr/local/lib/libjemalloc.so
export MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17
sudo java -jar application.jar

但是没有创建.heap 文件。我在 pmap -x 结果中找不到 libjemalloc.so。如何确保 jvm 使用 jemalloc?服务器是 ubuntu 服务器,应用程序正在使用 spring 引导。

当您 运行 sudo 时,Java 获取的根环境没有您之前导出的 LD_PRELOADMALLOC_CONF.

尝试

sudo LD_PRELOAD=/usr/local/lib/libjemalloc.so \
     MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17 \
     java -jar application.jar

顺便说一句,jemalloc 对于 分析 Java 应用程序并不总是有用,因为它无法显示 Java 堆栈(但它很有用防止 由标准分配器引起的内存泄漏)。

按照this answer中的描述尝试异步分析器。

同时检查 关于 Java 本机内存消耗。