对象的保留大小不等于它引用的所有对象的保留大小。
以下是发生的事情:
A>> B
答案 0 :(得分:4)
让我举个例子。
首先,您需要了解保留的大小。 来自官方documentation:
物体的保留尺寸是浅尺寸加上浅尺寸 直接或间接访问的对象,仅来自 这个对象。换句话说,保留的大小代表金额 在此对象时将由垃圾收集器释放的内存 收集。
简单来说,对象的保留大小确实是它所引用的对象的总和。在下图中,Obj1的保留大小是Obj1浅层大小和Obj2和Obj3保留大小的总和:
在更复杂的参考模型中并非如此。如果Obj6开始引用Obj5,则只能从Obj2访问Obj5。因此,Obj2的保留大小现在仅包括Obj4,并将排除Obj5。 Obj1的保留大小将保持不变。如果垃圾收集器释放Obj1,它将释放大小为41的整个引用图。 但是,如果垃圾收集器只释放Obj2,它将不会释放Obj5,因为它仍然会被Obj6引用。