java - Spring Boot应用程序不使用jemalloc

标签 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。

最佳答案

当您运行 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中的描述尝试async-profiler .

另请检查this post关于Java native 内存消耗。

关于java - Spring Boot应用程序不使用jemalloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54086528/

相关文章:

java - 使用 TcpOutboundGateway 和 CachingClientConnectionFactory 出现虚假错误 "Cannot correlate response - no pending reply"

javascript - 如何正确处理 Three.js 场景? (r55)

android - VM 在从缓存中获取图像时内存不足

android - 对 Activity 的弱引用 (Android)

java - Eclipse JNI共享库“架构字宽不匹配”错误的ELF类UnsatisfiedLinkError

java - Java 中的 BufferedImage 到 OpenCV Mat 中

spring - 在springboot中使用gradle时,加载依赖项遇到sun.security.validator.validatorexception。我不知道怎么解决

java - 无法从 View MainActivity.java 类型对非静态方法 invalidate() 进行静态引用

Java:当语义不变时,提交 vs 回滚 vs 什么都不做?

spring-mvc - Spring Boot 异常 : Could not open ServletContext resource [/WEB-INF/dispatcherServlet-servlet. xml]