前言
前几篇文章,我们聊过了JVM性能监控工具Visual VM的使用。今天到来一篇内存分析工具的使用,Eclipse的MAT~
不过,哈哈。文章内容还是来自我学弟的总结的,关于内存分析的文章。Eclipse应该已经成为我们一代人的记忆了,虽然作为IDE,它已经不再是首选。但是其中很多工具放在现在仍然拥有不俗的战斗力,比如MAT。
今天让我们走进MAT的使用,一步步来对内存进行分析~
如果感觉文章不错,百度:博客园 像风一样。就可以看到他
正文
MAT内存分析工具
MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器。可以用于查找内存泄露以及查看内存消耗情况。MAT是基于Eclipse开发的,是一款免费的性能分析工具。读者可以在下载并使用MAT。
1 初识MAT
在分析堆快照前,首先需要导出应用程序的堆快照。在本书前文中提到的jmap、JConsole和Visual VM等工具都可用于获得Java应用程序的堆快照文件。此外,MAT本身也具有这个功能。
单击左上角的“File”菜单下的“Accquire Heap Dump”选项后,会弹出当前Java应用程序列表,选择要分析的应用程序即可,如图所示。
除了直接在MAT中导出正在运行的应用程序堆快照外,也可以通过“Open Heap Dump”来打开一个既存的堆快照文件。
注意:使用MAT既可以打开一个已有的堆快照,也可以通过MAT直接从活动Java程序中导出堆快照。
如图所示,显示了正常打开堆快照文件后的MAT的界面。
右侧界面中,显示了堆快照文件的大小、类、实例和ClassLoader的总数。在右侧的饼图中,显示了当前堆快照中最大的对象。将鼠标悬停在饼图中,可以在左侧的Inspector界面中,查看该对象的相应信息。在饼图中单击某对象,可以对选中的对象进行更多的操作。
在工具栏上单击柱状图,可以显示系统中所有类的内存使用情况。图为系统内所有类的统计信息,包含类的实例数量和占用的空间。
另外一个实用的功能是,可以通过MAT查看系统中的Java线程,如图所示。
当然,这里查看Java层面的应用线程,对于虚拟机的系统线程是无法显示的。通过线程的堆栈,还可以查看局部变量的信息。如上图所示,带有“<local>”标记的,就为当前帧栈的局部变量,这部分信息可能存在缺失。
MAT的另外一个常用功能,是在各个对象的引用列表中穿梭查看。对于给定一个对象,通过MAT可以找到引用当前对象的对象,即入引用(Incomming References),以及当前对象引用的对象,即出引用(Outgoing References),如图所示:
下图显示了with outgoing reference 的输出。
为了方便查看,柱状图还提供了根据Class Loader和包对类进行排序。如下图是按照包排序的柱状图输出。
未完待续
尾声
因为篇幅原因,这篇文章就暂时写到这里。下篇文章:《MAT:浅堆和深堆》
1.文章《eclipse mat怎么用》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《eclipse mat怎么用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好