温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么使用MAT进行JVM内存分析

发布时间:2023-04-26 15:47:21 来源:亿速云 阅读:91 作者:iii 栏目:开发技术

本篇内容介绍了“怎么使用MAT进行JVM内存分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    背景描述

    公司小程序商城项目,服务器为阿里云。

    前段时间总是出现服务器CPU报警现象(设置的阈值为95%,CPU使用率大于95%会自动报警)。

    通过占用命令查看,迅速锁定当前运行的java进程。

    基础知识

    MAT简介

    Eclipse Memory Analyzer是一个快速且功能丰富的Java堆分析器,可帮助您查找内存泄漏并减少内存消耗。

    使用Memory Analyzer分析具有数亿个对象的高效堆转储,快速计算对象的保留大小,查看谁阻止垃圾收集器收集对象,运行报告以自动提取泄漏嫌疑者。

    Heap Dump

    首先了解下Heap Dump,它也叫堆转储文件,是java进程在某个时间内的快照。

    它在触发快照的时候保存了很多信息:java对象和类信息。

    通常在写Heap Dump文件前会触发一次Full GC。

    获取Dump

    • 通过OOM获取,即在OutOfMemoryError后获取一份HPROF二进制Heap Dump文件,可以在jvm里添加参数:

    • 通过OOM获取,即在OutOfMemoryError后获取一份HPROF二进制Heap Dump文件,可以在jvm里添加参数:

    • -XX:+HeapDumpOnOutOfMemoryError

    • 主动获取,即在虚拟机添加参数如下,然后在Ctrl+Break组合键即可获取一份Heap Dump

    • -XX:+HeapDumpOnCtrlBreak

    • 使用HPROF agent

    • 使用Agent可以在程序执行结束时或受到SIGOUT信号时生成Dump文件。配置在虚拟机的参数如下:

    • -agentlib:hprof=heap=dump,format=b

    • jmap 可以在cmd里执行,命令如下:

    • jmap -dump:format=b file=<文件名XX.hprof>

    • 使用JConsole

    分析实战

    首先获取dump,jmap -dump:format=b file=<文件名XX.hprof>

    使用MAT工具进行日志解析,根据日志的大小不同,解析时间不同。File>Open Heap Dump。

    怎么使用MAT进行JVM内存分析

    日志分析。可以看出,存在两个较大的问题,每个大约占用1G的空间

    怎么使用MAT进行JVM内存分析

    查看Problem Suspect 1的详细信息、线程的树结构以及线程对象汇总,发现Member对象有近52万个存活对象

    怎么使用MAT进行JVM内存分析

    怎么使用MAT进行JVM内存分析

    怎么使用MAT进行JVM内存分析

    分析线程栈信息,定位问题发生位置,并进行方法优化

    怎么使用MAT进行JVM内存分析

    怎么使用MAT进行JVM内存分析

    “怎么使用MAT进行JVM内存分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI