Eclipse MAT 里面的SHALLOW HEAP和RETAINED HEAP是什么意思?
原文在这里: Eclipse MAT 里面的SHALLOW HEAP和RETAINED HEAP是什么意思?
MAT是一款非常强大的JVM内存映像分析工具,对分析内存相关的问题非常有用,MAT报告中对对象大小的描述有两个相关的概念:
1.SHALLOW HEAP
2.RETAINED HEAP
本文就来介绍一下他们之间的区别。
首先我们来看下,这两个size是如何来计算的。
假如内存中存在以下的对象以及他们之间的引用关系,A引用了B和C,B引用了D、E,C引用了F、G,我们假设每一个对象本身在内存中是占10个字节,如下图所示:
SHALLOW HEAP大小:
一个对象的SHALLOW HEAP大小就是这个对象自己在内存中所占的字节数,本例中,每一个对象在内存中都是占用10个字节,因此这些对象的SHALLOW HEAP大小都是10字节。
对象B的RETAINED HEAP大小:
上图中得知,B引用了D和E,如果B被垃圾回收掉以后,D和E就没用引用,因此就可以被一起回收掉了,RETAINED HEAP的意思是当一个对象被回收以后总共可以释放的总的内存数量,因此对象B的RETAINED HEAP就等于B+D+E 的SHALLOW HEAP=30字节。
同理,C的RETAINED HEAP =C+F+G的SHALLOW HEAP =30字节。
同理,A的RETAINED HEAP = A+ B+ C + D + E+ F + G=70字节。
现在,我们修改下对象的引用关系,如下:
上图中,A的RETAINED HEAP是多少呢?答案是40字节!有木有大吃一斤?为啥呢?因为A被回收以后,只有C、F和G是可以一起被回收的,因此A的RETAINED HEAP = A + C + F + G的SHALLOW HEAP=40字节。
希望本文对你理解MAT的RETAINED 和 SHALLOW有所帮助,你也可以考虑使用另一款非常强大的内存分析工具HeapHero,它还可以分析出来由于不合理编程导致的内存浪费情况,比如:重复分配对象、没有充分使用的数据结构、非最优化的数据定义等等。
英文原文在这里:https://blog.gceasy.io/2019/01/03/shallow-heap-retained-heap/
Eclipse MAT 里面的SHALLOW HEAP和RETAINED HEAP是什么意思?相关推荐
- MAT工具学习,incoming reference和outgoing reference,Shallow Heap和Retained Heap
MAT工具学习 incoming reference和outgoing reference Shallow Heap和Retained Heap 常用工具 一般思路 incoming referenc ...
- eclipse菜单里面的clean和build是干什么用的
eclipse的build和clean的说明 关于eclipse的build: 1.在eclipse的project菜单下有build automatically.选中这个的话.每次在保存以后就会编译 ...
- eclipse菜单里面的clean是干什么用的?
由于eclipse的编译是基于时间戳的判断机制的. 因此当你按build all的时候有些eclipse认为时间戳没有改变的类不会被编译. 因此你可以先clean一下再编译.这个时候eclipse ...
- Memory Analyzer Tool 1 Shallow heap Retained heap dominator tree(控制树)
文章目录 1. shallow heap 2. retained heap 3. dominator tree(控制树) 1. shallow heap 引用原文介绍 :Shallow heap is ...
- eclipse MAT分析heap dump
官方参考文档:http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Ftasks%2Fanalyzingth ...
- 关于JS里面的Call Stack and Heap
关于JS里面的Call Stack and Heap Abstract What is the Call Stack and Heap in JS What is the difference bet ...
- Eclipse MAT 安装及使用
Eclipse MAT官方网页:https://www.eclipse.org/mat/downloads.php 一.MAT是什么? MAT(Memory Analyzer Tool),一个基于Ec ...
- Eclipse MAT 内存分析工具
Exlipse MAT 是一款强大的 Java 堆内存分析工具,我们可以通过该工具实现对 Java 堆内存的分析. 官网.实现查找内存泄漏以及查看内存消耗的情况. MAT 使用 首先去官网下载对应的软 ...
- eclipse中报错:java.lang.OutOfMemoryError: Java heap space
问题: 在eclipse中执行java程序.去重100多万的数据,报例如以下错误: java.lang.OutOfMemoryError: Java heap space 异常原因: 在JVM中假设9 ...
最新文章
- 要毁灭人类、喷马斯克、还获得公民身份的Sophia,是假的
- 游戏设计、原型与开发:基于Unity与C#从构思到实现pdf
- LiveVideoStack线上分享第五季(五):用FFmpeg搭建基于CNN的视频分析方案
- 专访 | PP云技术副总监:如何使用机器学习算法优化分发链路
- 跳跃问题(Java)
- HBase数据存储格式
- atcoder A - Frog 1(DP)
- 详细介绍 安装ns3步骤
- 公司官网无法通过域名访问,原来是tomcat配置出了问题
- 零基础怎么开启编程之路 -(第1期)
- MongoDB学习(黑马教程)-4-数据库MongoDB的更新(修改)文档操作
- python中arcpy_如何使用ArcPy?
- 如何将其他注册商处的域名申请转出并转入阿里云(图文教程)
- wangEditor + vue双向绑定(光标游走问题)
- 新浪微博API错误代码说明对照表
- HDU3665Seaside(最短路径)
- Linux 远程联机服务(二)- Rsh服务器
- c语言 英语试卷,英语听力试题及答案
- 关于CDN和DNS技术的解析以及搭建智能DNS的方法
- 攻城略地mysql充值_攻城掠地充值有巨惠!平台折扣5.0超划算
热门文章
- android 5寸屏分辨率是多少钱,720p精细分辨率
- 解决Cannot fit requested classes in a single dex file
- 数据结构与算法题目集(中文) - 7-32 哥尼斯堡的“七桥问题”(25 分)
- Ubuntu虚拟机磁盘容量不足
- GBase 8c如何启动/停止数据库集群组件
- notepad批量转换文件编码utf8、gbk
- java并行处理集合_java多线程并行处理List集合数据
- 迅雷X 10.1.7.262正式版去广告本地SVIP 落尘之木修改便携版竖屏版2018.12.17更新
- 如何组装属于自己的台式电脑
- shineblink控制全彩RGB LED