博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA Shallow heap & Retained heap
阅读量:7254 次
发布时间:2019-06-29

本文共 688 字,大约阅读时间需要 2 分钟。

最近在研究内存泄漏的问题,在使用MAT工具中发现了Shallow heap & Retained heap,不懂。

然后在网上找了一些资料。

 

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

转载于:https://www.cnblogs.com/lipeineng/p/5824799.html

你可能感兴趣的文章
<meta>标签基础
查看>>
Java中三种代理模式
查看>>
阅读《构建之法》十一、十二、十三章之感
查看>>
线程面试题50道
查看>>
第二阶段团队项目冲刺站立会议(六)
查看>>
Android三种播放视频的方式
查看>>
AOP方法增强自身内部方法调用无效 SpringCache 例子
查看>>
CentOS 7 安装 JDK
查看>>
正则表达式
查看>>
对配置文件内的固定内容加密解密
查看>>
epoll函数知识点
查看>>
pta l2-5(集合相似度)
查看>>
poj1019(打表预处理+数学)
查看>>
【转载】关于防火墙的初次接触
查看>>
集合和泛型 一
查看>>
php 把一个一维数组的值依次赋值到二维数组中的每一项
查看>>
CF_315C_Sereja and Contest
查看>>
vue,下级页面刷新导致路由跳转带过来的数据消失的解决方法
查看>>
border的简略
查看>>
echo
查看>>