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

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

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

GCRoots直接引用了A和B两个对象。

A对象的RetainedSize=A对象的ShallowSize
B对象的RetainedSize=B对象的ShallowSize+C对象的ShallowSize

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

此时,
B对象的RetainedSize=B对象的ShallowSize+C对象的ShallowSize+D对象的ShallowSize

转载请注明原文链接:http://kenwublog.com/understand-shallow-and-retained-size-in-hprofling

转载于:https://blog.51cto.com/aliapp/1325089

理解Heap Profling名词-Shallow和Retained Sizes相关推荐

  1. Shallow and retained sizes

    转载自:http://www.yourkit.com/docs/90/help/sizes.jsp YourKit Java Profiler is capable of measuring shal ...

  2. 深入理解JVM干货教学 - 【Shallow、Retained 、Deep Object Size 计算】

  3. Shallow size和Retained size

    Shallow size就是对象本身占用内存的大小,不包含其引用的对象.常规对象(非数组)的Shallow size有其成员变量的数量和类型决定.数组的shallow size有数组元素的类型(对象类 ...

  4. 使用Memory Analyzer tool(MAT)分析内存泄漏(一)

    使用Memory Analyzer tool(MAT)分析内存泄漏(一) (2010年05月21日) 发表于 Java博客 前言的前言 :本文是自 2005 年 8 月以来,首次在一个月之内发布三篇文 ...

  5. 使用Memory Analyzer tool(MAT)分析内存泄漏

    http://www.blogjava.net/rosen/archive/2010/05/21/321575.html http://www.blogjava.net/rosen/archive/2 ...

  6. 内存泄漏(OOM)产生原因

    为何会内存溢出 我们知道JVM根据generation(代)来进行GC,根据下图所示,一共被分为young generation(年轻代).tenured generation(老年代).perman ...

  7. android内存问题详解--重要

    转自:http://blog.csdn.net/dajian790626/article/details/9453993 第一种说法: 不用在意剩余内存的大小其实很多人都是把使用其他系统的习惯带过来 ...

  8. Android App定位和规避内存泄露方法研究

    from:http://site.douban.com/android/widget/notes/350758/note/167481484/ 工作中刚好用到,网上搜到的,觉得不错,与大家分享 And ...

  9. Chrome开发者工具详解(4)-Profiles面板

    Chrome开发者工具详解(4)-Profiles面板 如果上篇中的Timeline面板所提供的信息不能满足你的要求,你可以使用Profiles面板,利用这个面板你可以追踪网页程序的内存泄漏问题,进一 ...

  10. 使用Memory Analyzer tool(MAT)分析内存泄漏(二)

    前言 在 使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果.在本文中,将介绍MAT如何根据heap dump分析泄漏根源.由于测试范例可能过于简单 ...

最新文章

  1. 图灵2月书讯:书籍,不可分离的生命伴侣
  2. 设计模式--原型(Prototype)模式
  3. ArcGIS 10.3 for Server新特性介绍
  4. ANDROID STUDIO详细教程汇总
  5. 使用WebBenchmark对webapi进行管理和性能测试
  6. linux 修改默认脚本,linux环境初始脚本
  7. mysql慢查询工具
  8. vue练习之vue+cnode api
  9. Alibaba Druid 源码阅读(三) 数据库连接池初始化探索
  10. oracle迁移数据到mysql
  11. 游戏筑基开发之简单迷宫行走(内附碰撞检测底层逻辑)
  12. 学习笔记 利用反射 手写一个简单的实体类 转json 的方法
  13. MyLibrary --Qt + sqlite 图书馆管理系统
  14. 软件测试工作的基本流程是什么
  15. Linux基础 - DNS服务基础
  16. 关于oracle数据库死锁的解决 以及产生的原因
  17. “不差钱”的蔚来,为何着急回港上市?
  18. 推荐3款实用的PC端软件,工作生活两不误,每天5分钟悄悄成长
  19. 老婆的美丽背影------俞敏洪
  20. 软件测试宣传ppt,[软件测试ppt完整版.ppt

热门文章

  1. c++开发软件_Windows下学习C语言有哪些集成开发软件?
  2. python中tkinter模块_Python模块:tkinter
  3. 学生选课系统代码-4c【interface】视图层代码【MVC--c】代码
  4. 检测UDP端口是否开放的命令
  5. python-gui-pyqt5的使用方法-5--为类增加信号
  6. layui分页完整实例php,使用 layui 后端分页的实例
  7. bim服务器型号,国外有哪几个知名的BIM服务器?BIM服务器全介绍!(三)
  8. 构建工具Bazel入门
  9. python笔记2-冒泡排序
  10. excel查找和替换