码迷,mamicode.com
首页 > 编程语言 > 详细

java 堆问题分析(未完)

时间:2017-12-05 14:56:49      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:间接   bag   src   nbsp   shadow   大小   ges   数组   元素   

一 shallow heap 和 retained heap的区别

1 shallow size

是对象本身占据的内存的大小,不包含其引用的对象。对于常规对象(非数组)的shadow size由其成员变量的数量和类型来定,而数组的shallow size则是数组元素大小的总和。

2 retained size

Retained Size=当前对象大小 + 当前对象可直接或间接引用到的对象的大小总和。(间接引用的含义:A->B->C,C就是间接引用) ,并且排除被GC Roots直接或者间接引用的对象

 

换句话说,Retained Size就是当前对象被GC后,从Heap上总共能释放掉的内存。 
不过,释放的时候还要排除被GC Roots直接或间接引用的对象。他们暂时不会被被当做Garbage。 

技术分享图片

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

A对象的Retained Size=A对象的Shallow Size 
B对象的Retained Size=B对象的Shallow Size + C对象的Shallow Size

 

栗子??

技术分享图片

 

上图中obj1的retained size为obj1、obj2、obj4的shallow size总和,并不包括obj3的shallow size,因为obj3被Gc Roots引用了,也就是说obj3除了被obj2引用,还有其他外部引用。 

 技术分享图片

上图中obj1的retained size为obj1、obj2、obj3、obj4的shallow size总和,因为obj3除了被obj2引用,没有其他外部引用。

 

 摘自: http://blog.csdn.net/a740169405/article/details/53610689

java 堆问题分析(未完)

标签:间接   bag   src   nbsp   shadow   大小   ges   数组   元素   

原文地址:http://www.cnblogs.com/balfish/p/7986869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!