MAT基础知识:Shallow和Retained Size

本文介绍了MAT工具中Shallow Size和Retained Size的概念。Shallow Size是指对象自身内存大小,不包括引用对象;Retained Size则是对象及其可达对象的Shallow Size总和,表示对象被回收后释放的内存。通过例子说明了如何计算两者,并强调了在分析内存结构和查找内存泄漏时的重要性。
摘要由CSDN通过智能技术生成

MAT基础知识:Shallow和Retained Size

对于所有独立的对象,包括对象的结合都有他们自己的shallow size和retained size。

Shallow Size

一个对象的Shallow Size是指用于存储其本身的内存大小,这其中并不包括它所引用的其他对象大小。一个常规对象(非数组类型的对象)的Shallow Size依赖于其成员数量和类型。而对于数组而言,就依赖于数组长度以及其元素(对象或其他基本类型)类型。一个对象集合的Shallow Size则为其内所有的对象的Shallow Size的总和。

Retained Size

一个对象的Retained Size则为它自己加上仅仅从它自己出发的所有可达对象(也就是所吃持有的引用对象,无论直接或者间接)的Shallow Size之和。换言之,Retained Size就是指该对象被回收后可以释放的内存。总体而言,retained size是帮助理解内存结构、对象间依赖性以及寻找对象连通图潜在根节点的一种不必可少的手段。

举例

为了更好地理解retained size的概念,让我们来看下面的两个例子。

为了计算Retained Size,系统将所有内存中的对象视为有向图中的一个节点。图的边以及指向代表了对象间的引用关系。这里有个特殊的点,GC(Garbage Collection)根节点,它并不会被垃圾回收器处理。

下面的两幅图片展示了两个相同对象的集合,但是它们的内部引用状态并不相同

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值