问题排查-jmap和MAT工具

jmap常用命令

1、heap
命令:jmap -heap pid
描述:显示Java堆详细信息

2、histo[:live]
命令:jmap -histo:live pid
描述:显示堆中对象的统计信息

3、dump:<dump-options>
命令:jmap -dump:format=b,file=heapdump.phrof pid
描述:生成堆转储快照dump文件。

以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。

利用MAT分析dump文件

打开dump如图:

重要功能

1、Histogram

Histogram,可列出每一个类的实例数,支持正则表达式查找,也可以计算出该类所有对象的retained size。

Shallow Heap就是对象本身占用内存的大小,不包含其引用的对象内存,实际分析中作用不大。

Retained Heap值的计算方式是将RSet(当该对象被回收时那些将被GC回收的对象集合)中的所有对象大小叠加。或者说,因为X被释放,导致其它所有被释放对象(包括被递归释放的)所占的heap大小。

1、选择一个Class,右键选择List objects > with incoming references,在新页面会显示通过这个class创建的对象信息。
2、然后再选择一个对象,右键选择Path to GC Roots > ****,通常在排查内存泄漏的时候,我们会选择exclude all phantom/weak/soft etc.references,意思是查看排除虚引用/弱引用/软引用等的引用链,也就是强引用链。

2、Leak Suspects

Leak Suspects 界面提示可能存在内存的泄露。
比方说大对象:

通过Details可以查看具体问题的详情!

相关推荐:

SpringMVC的工作原理

一、spring简介    springMVC是spring框架的一个模块,springMVC和spring无需通过中间整合层进行开发。   springMVC是一个基于mvc的web框架。    spring web&...

oracle 手工删库

今天因为插入中文是乱码,发现字符集不是ZHS16GBK,所以准备删除了重新建SYS@icsdb>alterdatabaseclose;alterdatabaseclose*第1行出现错误:ORA-01093:ALTERDATABASECLOSE?????????????说明还要session连...

python代码调试工具~pdb

添加断点 指定函数:bfunc_name指定行号:bline_num指定断点编号处发生中断的条件:condition2a==7表示在断点2处出现a==7时,产生中断 删除断点 删除断点只能根据编号进行删除,如删除1号断点:cl1 查看断点 b 运行代码 单步跟踪,不进入函数:n单步跟踪,进入函数:s...

gopl 包和工具

空导入 如果导入包的名字没有在文件中引用,就会产生一个编译错误。但是,有时候必须导入一个包,这仅仅是为了利用它的副作用:对包级别的变量执行初始化表达式求值,并执行它的init函数。这里必须使用一个重命名导入,使用下划线作为替代的名字。这表示导入的内容为空白标识符,通常情况下,空白标识不可能被引用: ...

未来Python前景怎么样 学完之后能找到工作吗

  未来Python前景怎么样?学完之后能找到工作吗?目前,随着机器学习的火热,使用Python的公司也会越来越多,加上Python也可以很好的进行服务器端的开发,前景可以说是很好的。下面来看看吧。  不管你从事的是什么工作,数据都会是其中的一部分。IT,软件开发,市场等等——它们都深度地关乎数据且...

aircrack-ng工具1:airbase-ng

做为BT5下集成的一个工具,其功能可以说相当丰富,但是具体的用法却很难找到完全的,下面是我根据aircrack官网文档写的aircrack-ng系列工具参数说明:Airbase-ng作为多目标的工具,通过将自己伪装成AP***客户端,因为他的功能丰富多样,简单的概述是有难度的,这里我们是一些常用的特...