理解Heap Profling名词-Shallow和Retained Sizes
所有包含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相关推荐
- Shallow and retained sizes
转载自:http://www.yourkit.com/docs/90/help/sizes.jsp YourKit Java Profiler is capable of measuring shal ...
- 深入理解JVM干货教学 - 【Shallow、Retained 、Deep Object Size 计算】
- Shallow size和Retained size
Shallow size就是对象本身占用内存的大小,不包含其引用的对象.常规对象(非数组)的Shallow size有其成员变量的数量和类型决定.数组的shallow size有数组元素的类型(对象类 ...
- 使用Memory Analyzer tool(MAT)分析内存泄漏(一)
使用Memory Analyzer tool(MAT)分析内存泄漏(一) (2010年05月21日) 发表于 Java博客 前言的前言 :本文是自 2005 年 8 月以来,首次在一个月之内发布三篇文 ...
- 使用Memory Analyzer tool(MAT)分析内存泄漏
http://www.blogjava.net/rosen/archive/2010/05/21/321575.html http://www.blogjava.net/rosen/archive/2 ...
- 内存泄漏(OOM)产生原因
为何会内存溢出 我们知道JVM根据generation(代)来进行GC,根据下图所示,一共被分为young generation(年轻代).tenured generation(老年代).perman ...
- android内存问题详解--重要
转自:http://blog.csdn.net/dajian790626/article/details/9453993 第一种说法: 不用在意剩余内存的大小其实很多人都是把使用其他系统的习惯带过来 ...
- Android App定位和规避内存泄露方法研究
from:http://site.douban.com/android/widget/notes/350758/note/167481484/ 工作中刚好用到,网上搜到的,觉得不错,与大家分享 And ...
- Chrome开发者工具详解(4)-Profiles面板
Chrome开发者工具详解(4)-Profiles面板 如果上篇中的Timeline面板所提供的信息不能满足你的要求,你可以使用Profiles面板,利用这个面板你可以追踪网页程序的内存泄漏问题,进一 ...
- 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
前言 在 使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果.在本文中,将介绍MAT如何根据heap dump分析泄漏根源.由于测试范例可能过于简单 ...
最新文章
- 图灵2月书讯:书籍,不可分离的生命伴侣
- 设计模式--原型(Prototype)模式
- ArcGIS 10.3 for Server新特性介绍
- ANDROID STUDIO详细教程汇总
- 使用WebBenchmark对webapi进行管理和性能测试
- linux 修改默认脚本,linux环境初始脚本
- mysql慢查询工具
- vue练习之vue+cnode api
- Alibaba Druid 源码阅读(三) 数据库连接池初始化探索
- oracle迁移数据到mysql
- 游戏筑基开发之简单迷宫行走(内附碰撞检测底层逻辑)
- 学习笔记 利用反射 手写一个简单的实体类 转json 的方法
- MyLibrary --Qt + sqlite 图书馆管理系统
- 软件测试工作的基本流程是什么
- Linux基础 - DNS服务基础
- 关于oracle数据库死锁的解决 以及产生的原因
- “不差钱”的蔚来,为何着急回港上市?
- 推荐3款实用的PC端软件,工作生活两不误,每天5分钟悄悄成长
- 老婆的美丽背影------俞敏洪
- 软件测试宣传ppt,[软件测试ppt完整版.ppt
热门文章
- c++开发软件_Windows下学习C语言有哪些集成开发软件?
- python中tkinter模块_Python模块:tkinter
- 学生选课系统代码-4c【interface】视图层代码【MVC--c】代码
- 检测UDP端口是否开放的命令
- python-gui-pyqt5的使用方法-5--为类增加信号
- layui分页完整实例php,使用 layui 后端分页的实例
- bim服务器型号,国外有哪几个知名的BIM服务器?BIM服务器全介绍!(三)
- 构建工具Bazel入门
- python笔记2-冒泡排序
- excel查找和替换