tonglin0325的个人主页

java程序内存泄露排查

1.生成内存快照文件(Heap Profile)

1
2
jmap -dump:format=b,file=heap.hprof ${pid}

2.使用Eclipse Memory Analyzer工具对hprof文件进行分析

1.12.0版本需要jdk11,所以下载1.10.0版本

1
2
http://www.eclipse.org/downloads/download.php?file=/mat/1.10.0/rcp/MemoryAnalyzer-1.10.0.20200225-linux.gtk.x86_64.zip

由于堆栈文件可能会很大,所以需要修改 MemoryAnalyzer.ini 文件中的-Xmx1024m,比如改成-Xmx10240m,否则可能会遇到下面报错

1
2
an internal error occurred during parsing heap dump from

3.分析堆栈文件

 

查看内存泄露报告

 

 

发现有2处可疑的泄露

点击details,排查到可能是 class io.lettuce.core.AbstractRedisClient @ 0x41bc37380 引起的

 

排查使用的redis依赖是否有内存泄露的可能,找到

springboot使用redis压力测试出现内存泄漏解决方案