Spring Boot应用程序不使用jemalloc

时间:2019-01-08 06:46:25

标签: java spring-boot memory-leaks jvm 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 Boot。

1 个答案:

答案 0 :(得分:2)

运行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并不总是对 profiling Java应用程序有用,因为它不能显示Java堆栈(但对防止引起的内存泄漏很有用。标准分配器)。

按照this answer中所述尝试使用async-profiler。

还请检查this post有关Java本机内存消耗的信息。