1.生成内存快照文件(Heap Profile)
1 | jmap -dump:format=b,file=heap.hprof ${pid} |
2.使用Eclipse Memory Analyzer工具对hprof文件进行分析
1.12.0版本需要jdk11,所以下载1.10.0版本
1 | 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 | an internal error occurred during parsing heap dump from |
3.分析堆栈文件
查看内存泄露报告
发现有2处可疑的泄露
点击details,排查到可能是 class io.lettuce.core.AbstractRedisClient @ 0x41bc37380 引起的
排查使用的redis依赖是否有内存泄露的可能,找到
springboot使用redis压力测试出现内存泄漏解决方案