java 内存工具_Java-100天知识进阶-JVM调优工具-第三方工具-知识铺

原标题:Java-100天知识进阶-JVM调优工具-第三方工具-知识铺

JVM调优工具,第三方工具篇:

126f735df7b0a5cb7c54ee8fcb6e16d1.png

第三方JVM调优及性能排查工具还是不少,以后会慢慢分享出来。

今天先讲讲 MAT

一、MAT

介绍: 一个基于Eclipse的内存分析工具,以eclipse插件的形式来安装。可以提供内存泄漏和内存消耗问题,快速分析定位问题。

特点: 分析速度快,准确找到对象大小,以及为什么没有GC,更有直观的报表呈现给定位问题者。

方便:内存泄漏是很难定位问题,MAT可以很轻松,甚至是一键定位大问题点,并生成一个很专业的分析报告。

第一步:下载Eclipse MAT

下载地址: https://www.eclipse.org/mat/downloads.php

799a739788ba55effad5f09a79addcc2.png

第二步: 安装eclipse

12707a93f2f2a8d5f0811a4097869d0f.png

第三步:安装插件

当然你也可以进入eclipse,Eclipse MarketPlace搜索 “mat”找到后直接安装。

这里是导入安装模式,具体步骤:

File -> Import -> Other -> Heap Dump 然后选择Dump文件的路径,选择文件进行导入

第四步: 生成hprof

第一种: 命令法

C:\Users\xx>jmap -dump:format=b,file=d:/mem.hprof 12420

Dumping heap to D:\mem.hprof ...

Heap dump file created

第二种: JVM参数法

这种更便捷,更实用的方法,设置JVM参数:

-XX:+HeapDumpOnOutOfMemoryError

JVM 就会在发生内存泄露时抓拍下当时的内存状态。

第五步: 启动 eclipse mat

导入 mem.hprof

2eb68a6a3109b27172107f704c3b2f0d.png

62f282c5af5ecd8d3ac8b9eebb8c97b7.png

主要查看以下指标:

5.1 Histogram:列出内存中的对象,对象的个数以及大小,查询的时候很方便,可以支持正则表达式。这个列表清晰展现出实例,有多少个,占用内存总大小。

580d9ac25bfc66ff972ccf3b7a2fa9bc.png

5.2 Dominator Tree:列出最大的对象以及其依赖存活的Object ,使用Retained Heap 进行倒排序,方便列出依赖对象占用空间大小,比例等。

6c918b2ed64fb71ae7c04aaa43bd1a59.png

5.3 Top Consumers : 通过图形列出最大的object

b0e2263d5ad7ecb2c9a93788c751b925.png

5.4 duplicate classes :检测由多个类装载器加载的类

5.5 Leak Suspects :通过MA自动分析泄漏的原因。

5.5.1.查询内存消耗的对象

5.5.2 分析问题点 点击“Details ”链接,可以看到对象的详细分析报告

5.5.3 查询到有个很消耗内存的对象

4c61ed25b93bf49dcda5e18174653712.png

点击 java.util.vector

35834d3a4f99c5ac7563b0b0811e27df.png

对象中有个大量对象,Person , 由于引用还在,GC也没办法GC掉,这个vector会持续增长。

接下来就是处理这里业务层面导致的使用不当问题,然后进行处理,到这里,问题已经全部定位完成。

5.6 Top Components: 通过图形列出最大的object。

5.7 Component Report:分析对象属于同一个包或者被同一个类加载器加载。

5.8 分析引用栈,找到无效引用,打开源码,可以看大那些是无用的引用,处理掉。

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值