`

Memory Analyzer Tool(MAT)使用

    博客分类:
  • java
 
阅读更多

MAT 使用初探

今天线上一个应用的持久区满了,一直没有下来,导致一些服务不可用,就用jmap当出内存快照后,用MAT分析内存的基本信息,发现很多地方不会用。找了些资料记录在下来。

 

1.引用

 

  • Strong reference : 就是我们new出来的对象,但是还是被持有的应用,垃圾回收时不会回收这个应用
  • soft reference   : 我们new出来的对象,但是已经不被具体对象持有,常见的就是缓存中的对象引用,垃圾回收在内存还够的时候不会回收该部分内存信息,只有在内存不够时才会回收这块引用的对象
  • weak reference   : 当对象不在有强引用时候,垃圾回收时立刻回收。
  • Phantom reference : 不会在内存中出现,因为它一般是同ReferenceQueue一起出现,来跟踪对象是否还是保持强引用。

 

 

2.术语

shallow size:对象自身中有的内存大小 

retained size:对象自身大小 + 该对象直接或是间接引用对象的shallow size

GC Roots:所有的对象引用refer chains的起点。

 

 

以上左图中以object1来说,单独一个object1大小就是shallow size,object1及所有蓝色对象就是该对象直接或是间接引用的就是retained size。

同理右图中object4还被gc roots引用到,那么retained size就不包含这个。

 

 

 

 

 

3.实例

3.1导入一个内存文件后,用MAT打开,具体如下图所表示

 

 

3.2 details:一些基本信息

Size: 153.7 MB Classes: 331 Objects: 4.1m Class Loader: 3 Unreachable Objects Histogram

 

3.3 biggest object by retained size:显示在内存较大的对象信息

 

list objects -- with outgoing references : 查看这个对象持有的外部对象引用。

list objects -- with incoming references : 查看这个对象被哪些外部对象引用。

 

show objects by class  --  with outgoing references :查看这个对象类型持有的外部对象引用

show objects by class  --  with incoming references :查看这个对象类型被哪些外部对象引用

 

paths to gc root : 显示不同类型引用(上文中提到的Strong ,soft,weak )到跟节点的路径。

merge shorest path to gc root : 合并最短路径到root节点,这个具体没试过。

 

java basics:

    -- classloader 该对象对应的classloader信息 。

    -- thread details :线程信息

    -- thread stacks  :线程堆栈

    -- find String : 在这个对象中查询需要的字符串(还不确定,需要再搞下)

    -- group by : 根据某个字段统计出现的个数 

 

java collections:这个暂时没研究,以后再搞。

 

leak Identification -- top consumers :几个大消耗内存的对象 

 

 

3.4 可用操作

 

actions:

Histogram: 列出每个类型的实例数及大小 。

donimator tree :列出所有对象在整个内存对象中所占百分比。比较有用。

Top Consumers: 根据类名和包名列出开销最大的对象。

Duplicate Classes: 查找出在不同classloader中加载的相同类。

 

step by step 方式

 

MAP提供了两种分析方式:

1.查找内存泄漏的方式分析内存

2.通过组件方式分析内存主要从;空对象,重复对象加载等方面。

这个在第一次加载内存文件,或者可以通过

 

 

总结:

1.首先看retained size最大的那些数据,一般看内存都是想解决内存泄漏问题,可以通过Top Consumers或者是donimator tree等actions。

2.找到最大的数据后,通过list objects -- with outgoing references 查看具体持有了哪些对象,或者通过java basics -- classloader 。查看这个是因为我们这次因为perm区满了,需要查看这个数据。到底还是哪些classloader加载了数据。

 

 

tips:

持久区中存放的数据:

  类信息,方法信息,常量池,静态变量,对于加载自己的classloader引用、interned strings(字符串驻留)

分享到:
评论

相关推荐

    独立版mat(Memory Analyzer Tool )mac

    Memory Analyzer Tool,简称MAT,是Oracle公司开发的一款强大的Java内存分析工具,专用于诊断和优化Java应用的内存使用情况。MAT独立版为Mac用户提供了在操作系统环境下独立运行的版本,方便开发者对Mac平台上的Java...

    MAT(Memory Analyzer Tool)内存分析工具的安装与使用

    MAT是分析Java堆内存的一个工具,全称是 The Eclipse ...MAT 软件版本解压后目录内有个MemoryAnalyzer.ini文件,该文件里面有个Xmx参数,该参数表示最大内存占用量,默认为1024m,根据堆转储文件大小修改该参数即可。

    Memory Analyzer tool(MAT) 独立工具

    内存分析是Java应用程序性能优化的关键环节,而Memory Analyzer Tool (MAT) 是IBM开发的一款强大的内存分析工具,专门用于诊断Java应用程序中的内存泄漏和性能问题。MAT不仅提供了详细的内存使用报告,还能帮助...

    MemoryAnalyzer 使用中文

    为了有效地检测和解决这些问题,Eclipse Memory Analyzer Tool(简称MemoryAnalyzer,MAT)应运而生。这款强大的分析工具提供了详细的内存分析功能,帮助开发者诊断和修复内存问题,提升应用性能。 MemoryAnalyzer...

    MemoryAnalyzer(MAT)

    《深入理解MemoryAnalyzer(MAT):Android内存泄漏分析利器》 MemoryAnalyzer,简称MAT,是IBM公司开发的一款强大的Java内存分析工具,尤其在处理Android应用的内存泄漏问题时,MAT显得尤为关键。本文将深入探讨...

    Memory Analyzer (MAT) windows64位版本

    在下载MAT时,我们需要寻找适用于Windows 64位系统的版本,通常可以在Eclipse官方网站或者通过搜索"window mat下载 MemoryAnalyzer"找到最新版本。下载完成后,MAT是一个可执行的jar文件,无需安装过程,只需双击...

    MAT-Memory Analyzer Tool Java内存泄漏分析工具1.5

    MAT 是一个开源的java内存分析工具,能够快速的分析dump文件,可以直观的看到各个对象在内存占用的量大小,以及类实例的数量,对象之间的引用关系,找出对象的GC Roots相关的信息,此外还能生成内存泄露报表,疑似...

    eclipse MAT(Memory Analyzer Tool)

    MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存...

    MAT(Memory Analyzer Tool)

    MAT(Memory Analyzer Tool)工具是eclipse的一个插件,使用起来非常方便,尤其是在分析大内存的dump文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用OQL对象查询,...

    Memory Analyzer tool(MAT) 独立工具非eclipse集成插件

    内存分析是Java应用程序性能优化的关键环节,而Memory Analyzer Tool (MAT) 是IBM提供的一款强大的、独立的内存分析工具,它并非作为Eclipse的集成插件存在。MAT的强大之处在于其能够帮助开发者深入理解应用程序的...

    MemoryAnalyzer For Mac

    MemoryAnalyzer For Mac 百度网盘 解压后是mat.app。 类似执行以下命令:(注意换成自己的地址) /pllhome/software/Linux/mat.app/Contents/MacOS/MemoryAnalyzer -data ./workspace

    Eclipse Memory Analyzer (Mac版)

    Eclipse Memory Analyzer(MAT,全称Memory Analyzer Tool)是一款强大的Java内存分析工具,尤其在Mac平台上,它提供了独立于Eclipse环境的版本,方便开发者直接使用。MAT的主要目标是帮助开发者诊断和解决Java应用...

    Eclipse Memory Analyzer中文使用说明(带书签)

    - 加载到 Memory Analyzer:在 Eclipse 中打开 MAT,导入 Heap Dump 文件进行分析。 - 分析 dominator tree 和 Leak Suspects:查看并理解 dominator tree 和 Leak Suspects 报表,找出内存占用高的对象和可疑的...

    MemoryAnalyzer-1.10.0_x86_64.zip

    标题中的"MemoryAnalyzer-1.10.0_x86_64.zip"指的是MAT的一个特定版本,即1.10.0,针对64位架构设计。这个版本包含了对64位JVM的优化,使得它能有效地分析那些运行在64位操作系统上的Java应用的内存使用情况。 描述...

    Eclipse--Memory-Analyzer中文教程

    Memory Analyzer可以单独使用,也可以作为Eclipse的插件使用。 内存分析的基本概念包括Heap Dump(堆转储文件),它是Java进程在运行时的一个内存快照,包含了类信息、对象信息以及线程状态信息等。Heap Dump可以...

    MemoryAnalyzer(JDK8)-1.11.0.20201202-win32.win32.x86_64.zip

    Memory Analyzer Tool(MAT)工具是 eclipse 的一个插件(MAT 也可以单独使用),它分析大内存的 dump 文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用 OQL 对象查询,...

    mat内存分析工具单独软件无需安装-Eclipse Memory Analyzer Version 1.7.0.rar

    MAT(Memory Analyzer Tool)是Eclipse项目开发的一款强大的Java内存分析工具,主要用于诊断Java应用程序的内存泄漏和性能问题。在标题中提到的“Eclipse Memory Analyzer Version 1.7.0.rar”是一个压缩包,其中...

    MemoryAnalyzer-1.11.0.20201202-win32.win32.x86-64.zip

    资源名称:Eclipse MemoryAnalyzer,MAT(Memory Analyzer Tool) 文件名称:MemoryAnalyzer-1.11.0.20201202-win32.win32.x86_64.zip 描述: Eclipse Memory Analyzer是一个快速而功能丰富的Java堆分析器,可帮助您...

Global site tag (gtag.js) - Google Analytics