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://blog.csdn.net/lyd135364/article/details/121449969?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-121449969-blog-116278233.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-121449969-blog-116278233.pc_relevant_recovery_v2&utm_relevant_index=5

mat使用方法(简单):https://www.cnblogs.com/wuxiaomiao333/p/13590417.html

posted @ 2023-02-21 16:30  Frank13054  阅读(236)  评论(0编辑  收藏  举报