`

关于MAT分析工具中的Shallow heap & Retained heap

    博客分类:
  • Java
阅读更多

本文转载自:http://bjyzxxds.iteye.com/blog/1532937

 

所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size. 
这是两个在平时不太常见的名词,本文会对这两个名词做一个详细的解释。 

Shallow Size 
对象自身占用的内存大小,不包括它引用的对象。 
针对非数组类型的对象,它的大小就是对象与它所有的成员变量大小的总和。当然这里面还会包括一些java语言特性的数据存储单元。 
针对数组类型的对象,它的大小是数组元素对象的大小总和。 

Retained Size 
Retained Size=当前对象大小+当前对象可直接或间接引用到的对象的大小总和。(间接引用的含义:A->B->C, C就是间接引用) 
换句话说,Retained Size就是当前对象被GC后,从Heap上总共能释放掉的内存。 
不过,释放的时候还要排除被GC Roots直接或间接引用的对象。他们暂时不会被被当做Garbage。 

看图理解Retained Size 

 

上图中,GC Roots直接引用了A和B两个对象。 

A对象的Retained Size=A对象的Shallow Size 
B对象的Retained Size=B对象的Shallow Size + C对象的Shallow Size 

这里不包括D对象,因为D对象被GC Roots直接引用。 
如果GC Roots不引用D对象呢? 

 


此时, 
B对象的Retained Size=B对象的Shallow Size + C对象的Shallow Size + D对象的Shallow Size

分享到:
评论

相关推荐

    mat分析中文文档

    6. **内存分析工具使用方式**:MAT工具既可以直接下载独立版本使用,也可以作为插件嵌入到Eclipse集成开发环境中使用。文档中提到,如果是使用其他集成开发环境(IDE),可以考虑使用MAT的独立版本。 ### 描述知识...

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

    9. **Shallow Heap与Retained Heap**:MAT区分了对象本身占用的内存(Shallow Heap)和通过它间接保留的内存(Retained Heap),帮助理解内存消耗的真正来源。 10. **Delta分析**:比较两次堆转储的区别,用于追踪...

    Android MAT 内存分析 工具

    MAT(Memory Analyzer Tool)是由Eclipse基金会开发的一款强大的Java堆内存分析工具,虽然在Android Studio中内置了内存分析功能,但若需要更深入的内存泄漏检测和性能优化,MAT提供了更为专业的解决方案。MAT工具...

    mat工具,可以分析hprof文件

    MAT(Memory Analyzer Tool)是Eclipse基金会开发的一款强大的Java堆内存分析工具,专门用于诊断Java应用程序的内存问题,如内存泄漏、内存占用过高以及对象生命周期管理等。标题中提到的"mat工具,可以分析hprof...

    MAT 堆内存分析工具

    然后,将堆转储文件加载到MAT中,选择合适的视图和报告进行分析。最后,根据MAT提供的信息调整代码,优化内存使用,防止内存泄漏。 MAT的绿色版免安装特性使得它更加方便易用,用户无需复杂的安装步骤,只需解压后...

    内存堆栈分析工具MAT 64bit软件(Memory Analysis Tool)

    MAT(Memory Analyzer Tool)是一款强大的64位内存分析工具,由Eclipse基金会开发,专为Java开发者和运维人员设计,用于检测和诊断内存泄漏问题。 MAT提供了一个直观的用户界面,支持对.hprof文件进行深度分析,...

    ubuntu 14.0 MAT 内存分析工具

    5. **Shallow Heap与Retained Heap**:MAT提供了这两个关键指标,前者表示对象本身占用的内存,后者则包括了由该对象间接引用的所有对象的总内存。 6. **OQL(Object Query Language)**:MAT内置了一种查询语言,...

    jvm内存分析工具mat安装包

    MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的JVM内存分析工具,尤其适用于诊断Java应用程序的内存泄漏问题。在Java开发过程中,内存溢出(Out Of Memory)问题常常会导致程序异常终止,而MAT就是解决这类...

    MAT内存分析工具.zip

    6. **Shallow Heap与Retained Heap**:MAT可以区分对象自身占用的内存(Shallow Heap)和由该对象间接导致的所有对象占用的内存(Retained Heap),有助于评估对象的实际内存影响。 7. **Leak Suspects报告**:MAT...

    内存泄漏分析工具mat

    MAT(Memory Analyzer Tool)是由Eclipse基金会开发的一款强大的Java内存分析工具,它专门用于检测和分析Java应用的内存泄漏问题。 MAT提供了多种功能来帮助开发者诊断和解决内存泄漏问题。首先,MAT可以生成详细的...

    (三)MATJVM 内存分析工具.MAT JVM 内存分析工具

    MAT(Memory Analyzer Tool)是IBM开发的一款强大的Java虚拟机(JVM)内存分析工具,它可以帮助开发者诊断和解决Java应用程序的内存泄漏问题,优化内存使用效率。MAT以其丰富的功能、直观的用户界面以及详尽的分析...

    MAT Java内存分析工具

    6. **Shallow Heap和Retained Heap**:MAT区分了对象的浅层堆(Shallow Heap)和保留堆(Retained Heap),前者表示对象自身占用的内存,后者包括对象及其依赖的所有对象占用的内存。 7. **哈希表分析**:对于存储...

    mat工具测试类

    MAT,全称Memory Analyzer Tool,是Eclipse基金会提供的一个强大的Java堆内存分析工具。它能够帮助开发者检测和解决Java应用程序中的内存泄漏问题,优化内存使用,从而提高应用性能。MAT工具测试类通常是为了验证和...

    MAT分析工具是一个快速且功能丰富的Java堆分析器

    8. **Shallow Heap和Retained Heap**:MAT区分了对象自身的内存占用(Shallow Heap)和该对象导致的所有对象的总内存占用(Retained Heap),这对于理解内存消耗非常有帮助。 9. **阈值设置**:用户可以根据需求...

    最新版mat java内存分析工具

    7. **Shallow Heap与Retained Heap**:MAT区分了浅堆(Shallow Heap)和保留堆(Retained Heap)。浅堆表示对象自身占用的内存,而保留堆则包括了对象及所有依赖它的对象所占的内存,这有助于评估对象的真实内存影响...

    eclipse MAT 内存分析工具

    6. **Shallow Heap与Retained Heap**:MAT可以显示对象的浅色堆(Shallow Heap)和保留堆(Retained Heap)。浅色堆表示对象自身占用的内存,而保留堆则考虑了该对象通过引用链所保留的所有内存。 7. **OQL(Object...

    eclipse mat日志分析工具

    Eclipse Memory Analyzer Tool (MAT) 是一款强大的Java堆内存分析工具,主要用于诊断和解决Java应用程序中的内存泄漏问题。它能够帮助开发者深入理解JVM内存结构,找出占用内存过大的对象和引用链,从而优化程序性能...

    MAT使用手册无加密.pdf

    MAT是一个Java堆内存分析工具,它可以集成在Eclipse开发环境中使用。该手册针对MAT的使用进行了详尽的指导,解释了MAT如何帮助开发者分析Java堆dump文件,识别内存泄漏,并自动生成相应的分析报告。本文将结合文档...

    eclipse 内存分析工具(MAT) 1.2.1

    Eclipse内存分析工具(MAT,Memory Analyzer Tool)是一款强大的Java应用程序内存分析工具,它能够帮助开发者定位和解决Java应用中的内存泄漏问题。MAT 1.2.1是该工具的一个版本,提供了更稳定和高效的内存分析功能...

Global site tag (gtag.js) - Google Analytics