Java内存分析工具MAT

Wesley13
• 阅读 960

MAT是一个强大的内存分析工具,可以快捷、有效地帮助我们找到内存泄露,减少内存消耗分析工具。 内存中堆的使用情况是应用性能监测的重点,而对于堆的快照,可以dump出来进一步分析,总的来说,一般我们对于堆dump快照有三种方式:

  • 添加启动参数发生OOM时自动dump: java应用的启动参数一般最好都加上-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=logs/heapdump.hprof,即在发生OOM时自动dump堆快照,但这种方式相当来说是滞后的(需要等到发生OOM后)。
  • 使用命令按需手动dump: 我们也可以使用jmap -dump:format=b,file=HeapDump.hprof <pid>工具手动进行堆dump和线程dump
  • 使用工具手动dump:jvisualvm有提供dump堆快照的功能,点击一下即可。

使用MAT,可以轻松实现以下功能:

  • 找到最大的对象,因为MAT提供显示合理的累积大小(retained size
  • 探索对象图,包括inboundoutbound引用,即引用此对象的和此对象引出的。
  • 查找无法回收的对象,可以计算从垃圾收集器根到相关对象的路径
  • 找到内存浪费,比如冗余的String对象,空集合对象等等。

之前使用arthas,可以诊断stack、thread、class、function的性能及调用分析, arthas依赖jdk,如果jre需要手工安装jps、tools.jar等,但 arthas没有整合jmap功能,没有heap分析。

所以目前看来在线jvm诊断 arthas、jmap加上eclipse mat就可以覆盖性能分析、heap分析的全部要求了。

点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java 常用命令
查看堆使用情况jmapheappid查看占用内存高的对象jmaphisto:livepid|headn100查看占用内存高的对象,dump成文件,线下分析jmapdump:live,formatb,filexxx.xxxpid查看进程的线程情况psppidLopcpu,pmem,p
Stella981 Stella981
3年前
JVM常用命令解析
命令行:1.jps:虚拟机进程状况工具2.jstat:虚拟机统计信息监视工具3.jinfo:java配置信息工具4.jmap:java内存映射工具5.jhat:虚拟机堆转储快照分析工具6.jstack:java堆栈跟踪工具7.hsdis:jit生成代码反编汇8.目录:D:\\ProgramFiles\\jd
Stella981 Stella981
3年前
JVM 面试
1、内存模型以及分区,需要详细到每个区放什么。通俗的说,Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在Java虚拟机启动时创建,非堆内存(NonheapMemory)是在JVM堆之外的内存。简单来说,堆是Java代码可及的内
Wesley13 Wesley13
3年前
Java程序内存分析:使用mat工具分析内存占用
MAT不是一个万能工具,它并不能处理所有类型的堆存储文件。但是比较主流的厂家和格式,例如Sun,HP,SAP所采用的HPROF二进制堆存储文件,以及IBM的PHD堆存储文件等都能被很好的解析。下面来看看要怎么做呢,也许对你有用。官方文档:http://help.eclipse.org/luna/index.jsp?topic/
Wesley13 Wesley13
3年前
JDK核心JAVA源码解析(4)
想写这个系列很久了,对自己也是个总结与提高。原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。本篇文章针对堆外内存与DirectBuffer进行深入分析,了解Java对于堆外内存处理的机制,为下一篇文件IO做好准备Java堆栈内存与堆外内
Stella981 Stella981
3年前
JavaScript 堆内存分析新工具 OneHeap
OneHeap关注于运行中的JavaScript内存信息的展示,用可视化的方式还原了HeapGraph,有助于理解v8内存管理。背景JavaScript运行过程中的大部分数据都保存在堆(Heap)中,所以JavaScript性能分析另一个比较重要的方面是内存,也就是堆的分析。利用ChromeDevTools可
Stella981 Stella981
3年前
Linux下快速分析DUMP文件
dump文件传输到本地进行分析,常常需要大量的等待时间。使用IBM的eclipse的MAT工具可以直接在服务器上进行快速DUMP分析。运行环境要求linux操作系统JDK8以上下载MAT的linux版本Eclipse的MAT工具下载链接(https://www.oschina.net/action/
Wesley13 Wesley13
3年前
UAVStack功能上新:新增JVM监控分析工具
UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。引言作为AllInOne的智能化服务技术栈,UAVStack提供了非常全面的监控数据采样功能,同时支持数据监控与预警。近期,我们整合了原有的数据采集展示功能,新
Stella981 Stella981
3年前
JVM优化之
XmnXmsXmxXss有什么区别Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。\Xms堆内存的最小大小,默认为物理内存的1/64\Xmx堆内存的最大大小,默认为物理内存的1/4\Xmn堆内新生代的大小。通过这个值也可以得到老