jvm内存泄露分析方法
场景:使用监控工具发现内存使用不断增加,则有可能存在内存泄露,内存泄露可以使用jmap工具进行分析。jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等,可以使用jmap生成Heap Dump。
排查步骤如下:
1.使用top命令查看是哪个进程耗的内存比较多。通过快捷键 shift+m 对内存进行排序。
2.执行命令打印堆栈信息 堆文件为 aaa.hprof jmap -dump:live,format=b,file=aaa.hprof 18037
3.使用mat分析工具(JDK得11以上才能使用)对步骤2打印的aaa.hprof 文件进行分析找到占用大量内存的线程。为了找到内存泄露,获取了两个堆转储文件,两个文件获取时间间隔是一天(因为内存只是小幅度增长,短时间很难发现问题)。对比两个文件的对象,通过对比后的结果可以很方便定位内存泄露。
mat使用方法(简单):https://www.cnblogs.com/wuxiaomiao333/p/13590417.html