一个对象的浅大小,指的是该对象本身的大小,如果该对象包含一个指向另一个对象的引用,4字节或8字节的引用会计算在内,但是目标对象的大小不会包含进来。
对象的深大小则包含哪些引用对象本身的大小。
保留大小与深大小的区别在于哪些存在共享的对象,保留对象的大小不包含那些共享对象。
举例:假设5个对象:A,B,C,D,E。其中A成员变量引用B和C,D成员变量引用C和E
A的浅堆大小=A
A的深堆大小 = A + B + C
A的保留内存大小 = A + B,因为D引用了C。
保留内存为对象回收后,肯定释放的内存,上述例子中,回收A,肯定会回收B,但是不会回收C,因为D引用了C。