关键词不能为空

当前您在: 主页 > 英语 >

内存分析工具MAT的使用

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-16 00:44
tags:

-

2021年2月16日发(作者:niba)


内存分析工具


MAT


的使用


一、


MAT


插件安装

< p>


MAT(Memory Analyzer Tool)


是基于


heap dumps


来进行分 析的,它的分析速


度比


jhat


快,分 析结果是图形界面显示,比


java


内置


jhat


的可读性更高


,


通过


Eclipse


市场安装


< br>方法


/


步骤


1

< br>


打开


Eclipse - >help


- > Eclipse Marketplace



2



1


/


17


文档可自由编辑



点击


install


,等待下面的进度条加载完毕后, 勾选全部,点击


Next



3




同意协 议后,点击


Finish


就开始安装


M AT




2


/


17


文档可自由编辑




直接输入


URL

安装



方法


/

步骤


2



1.



2.




打开


Eclipse - >help


- > Install New Software





work with


输入图中下载地址,勾选


Memory


Analyzer for


Eclipse IDE


选项




3.




若没有勾选


Memory


Analyzer for Eclipse IDE


选项,点 击地址栏


旁边的


Add


,在

< p>
location


里输入以上地址,点击


OK


即可。



3


/


17


文档可自由编辑



4.




安< /p>









< p>
Eclipse




启< /p>





wind ow


-


>


open

< p>
perspective


,看到


Memory Analysis


证明安装成功。




























































































































































































4


/


17


文档可自由编辑



二、


MAT


的使用



案例一



问题



线上某一台机器出现异常


.


接口调用的


rt


达到了万级别


..


基本可以判断这


个机器已经挂了


.

进而分析该机器一直在


fgc.


然后马上

< br>dump


内存


,


进而进行分



(


中间一些异常的


gc


日志没有截图


).


之前学习的< /p>


jvm


知识都是纯理论的


,



次是实打实线上出现的问题


.

所以记录一下


.



步骤



1


、 先


dump


对应的堆


,


然后从线上发到自己本机





dump


的命令是



jmap -dump:format=b,




2


、调整


e clipse


的内存






具体的数值

,


需要看


dump


的文件大小


.


比如我的


dump


文件是


1.3G,


我就


给了


eclipse 2G


的内存


..


据说有些


dump


文件有几十个

G


的大小


,


那么分析的

< p>
机器也必须比这个大才行


,


否则

< br>eclipse


本身就


OOM



.




3


、分析


.






调整到


Memory Analysis

< br>窗口


,


然后


File->Ope n Heap Dump



然后选择


dump


的文件


,


然后


MAT


就自动会进行分析


..


分析完了


,


直接查


< br>


Leak Suspects Report . MAT

< br>会自动帮你找内存泄露的疑凶


.


然后给你



5


/


17


文档可自由编辑




点下面的


Detail .


可以看到最直观的类和所占用的大小



可以看到


,


IosPushClient


的直接引用是


40byte


但是对应 的间接引用达到了


恐怖的


420M


那么再点击该类


,list obejcts .


重点看间接引用占用的大的



6


/


17


文档可自由编辑




7


/


17


文档可自由编辑



可以看到这个


LinkedHashMap



,



47528



1776byte


的对象。



其实看到这里


,


就基本清楚了


.


这个是由于在


push


的时候把对 应的


push


消息


给保留住

< p>
,


然后造成一直堆积在内存中造成的。




解决办法:






在不 修改对应的


push


底层实现的前提下


,


每次


push


2W


条消息就清


理一次


.


后续有时间再修改底层逻辑吧


.



案例二



1


内存泄漏的排查方法



8


/


17


文档可自由编辑


-


-


-


-


-


-


-


-



本文更新与2021-02-16 00:44,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/656834.html

内存分析工具MAT的使用的相关文章