jvm内存泄露分析方法——jmap

       使用监控工具发现内存使用不断增加,则有可能存在内存泄露,内存泄露可以使用jmap工具进行分析。jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等,可以使用jmap生成Heap Dump。 

1.使用top命令查看是哪个进程耗的内存比较多。通过快捷键 shift+m 对内存进行排序。

2.执行命令打印堆栈信息 堆文件为 aaa.hprof    jmap -dump:live,format=b,file=aaa.hprof 18037

3.使用mat分析工具对步骤2打印的aaa.hprof 文件进行分析找到占用大量内存的线程。为了找到内存泄露,获取了两个堆转储文件,两个文件获取时间间隔是一天(因为内存只是小幅度增长,短时间很难发现问题)。对比两个文件的对象,通过对比后的结果可以很方便定位内存泄露。

posted @ 2020-08-31 14:44  wuxiaomiao  阅读(1346)  评论(0编辑  收藏  举报