JVM MAT分析器中的shallow heap 和 retained heap详解
Shallow Size (对象自身占用的内存大小)
Retained Size (被GC后Heap上释放的内存大小)
with outgoing references(查看对象为什么消耗内存,查看对象引用的其他对象)
with incoming references(查看对象被谁引用)
https://www.cnblogs.com/hanlinhu/p/10174185.html
------------
Java内存分析工具MAT(Memory Analyzer Tool)
shallow heap:对象本身的大小,如果是数组或集合则是各个元素的总大小。
retained heap:对象本身的大小 + 引用的其他对象的大小。
一个对象的shallow heap的大小指的是该对象在没有引用其他对象的情况下本身占用的内存大小。一个普通对象的shallow heap 的大小(不包括数组类型)依赖于它含的方法,元素的大小。而一个数组类型的shallow heap的大小则依赖于数组的长度和数组里面元素的类型。集合类型的shallow heap的大小则指的是集合所包含的所有对象的大小的总和。这么说有点抽象,下面拿一个实例来分析。
retained heap是指对象自己本身的shallow heap的大小加上对象所引用的对象的大小。换句话说retained heap的大小是指该对象被回收时垃圾回收器应该回收的内存的大小。
垃圾回收器在回收垃圾是不仅回收该对象还要回收该对象所引用的对象。为了更好地而理解retained heap我们来看看下面的例子:下图中的节点代表着对象,带有箭头的边代表着对引用关系。
上图中用蓝色标记的对象表示直接或间接被obj1所引用的对象。图1中我们看到obj3并没有标记成蓝色因为它是被Gc Root直接引用的。图2中的obj3未被Gc Root直接引用所以被标记成蓝色。
因此
在figure1中 obj1的retained heap的大小 = Obj1的shallow heap+ Obj2的shallow heap+Obj4的shallow heap;
在figure2中 obj1的retained heap的大小 = Obj1的shallow heap+ Obj2的shallow heap+ Obj3的shallow heap+ Obj4的shallow heap;
转自:https://blog.csdn.net/u013309870/article/details/52038407
https://www.cnblogs.com/hanlinhu/p/10174185.html
JVM MAT分析器中的shallow heap 和 retained heap详解相关推荐
- 第26课:MAT中的Dominator Tree与Retained Set详解
内容: 1.Dominator Tree与Retained Set 2.Dominator Tree详解 一.Dominator Tree与Retained Set Retained ...
- Eclipse MAT 里面的SHALLOW HEAP和RETAINED HEAP是什么意思?
原文在这里: Eclipse MAT 里面的SHALLOW HEAP和RETAINED HEAP是什么意思? MAT是一款非常强大的JVM内存映像分析工具,对分析内存相关的问题非常有用,MAT报告中对 ...
- MAT工具学习,incoming reference和outgoing reference,Shallow Heap和Retained Heap
MAT工具学习 incoming reference和outgoing reference Shallow Heap和Retained Heap 常用工具 一般思路 incoming referenc ...
- colsure php_PHP_PHP中Closure类的使用方法及详解,Closure,匿名函数,又称为Anonym - phpStudy...
PHP中Closure类的使用方法及详解 Closure,匿名函数,又称为Anonymous functions,是php5.3的时候引入的.匿名函数就是没有定义名字的函数.这点牢牢记住就能理解匿名函 ...
- oracle中的exists 和 not exists 用法详解
from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...
- R语言中如何计算C-Statistics?几种计算方法详解
R语言中如何计算C-Statistics?几种计算方法详解 目录 R语言中如何计算C-Statistics? #包导入 #数据加载编码
- python中的class怎么用_对python 中class与变量的使用方法详解
python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...
- java中sleep()、wait()相同与不同详解
java中sleep().wait()相同与不同详解 相同 java中Thread#sleep和Object#wait方法都是暂停当前线程,当前线程让出CPU占用.并不存在调用sleep后还占用CPU ...
- python爬取图片-Python爬取网页中的图片(搜狗图片)详解
前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...
- object类中的equals与自定义equals方法详解
object类中的equals与自定义equal方法详解 1.this怎么理解?this == obj表示什么? this就是当前你new出来的对象,这里指谁调用equal方法this指的就是谁,ob ...
最新文章
- 数据库多个表内容合并
- 科研人员必须知道的SCI知识
- Yoshua Bengio等图神经网络的新基准Benchmarking Graph Neural Networks(代码已开源)
- Node.js -- 目录
- 如何调换antd中Modal对话框确认按钮和取消按钮两个按钮的位置
- esp8266教程:开发方式和SDK选择
- C语言sar图像几何校正,SAR图像几何校正方法与流程
- 解决Ubuntu远程连接mysql连不上的问题
- css3加号图标_css实现“加号”效果的实例代码
- 一款基于Vue的自适应Web在线音乐播放器
- 宏基因组组装神器-MEGAHIT使用及常见问题
- MATLABSTM32CubeMX联合开发系列——不用手写一行代码就能实现CAN通讯
- android连不上电脑,安卓手机USB数据线连接不上电脑的最佳解决方法
- 2016年4月计算机组成原理试题答案,2019年4月江苏自考02318计算机组成原理模拟试题及答案...
- Java并发包:ExecutorService和ThreadPoolExecutor
- 推荐十四款常见的Web前端开发框架
- vue动态生成html元素,Vue.js中的动态html元素
- 专题05-python操作微信(wxpy)
- 5u fb库 三菱plc_三菱PLCFX5U系列
- Zemax中的优化算法