Позвольте привести пример.
Прежде всего, необходимо понять, что такое сохраненный размер. Из официальной документации:
Сохраняемый размер объекта – это его неглубокий размер плюс неглубокие размеры объектов, которые доступны прямо или косвенно только из этого объекта. Другими словами, сохраняемый размер представляет собой объем памяти, который будет освобожден сборщиком мусора при сборе этого объекта.
В простом сохраняемый размер объекта действительно будет суммой объектов, на которые он ссылается. На рисунке ниже сохраненный размер Obj1 представляет собой сумму неглубокого размера Obj1 и сохраненного размера Obj2 и Obj3: ![простой случай](https://i.stack.imgur.com/AOEmu.png)
Это не относится к более сложным моделям ссылок. Если Obj6 начнет ссылаться на Obj5, то Obj5 не будет доступен только из Obj2. Таким образом, сохраненный размер Obj2 теперь будет включать только Obj4 и исключать Obj5.
Сохраненный размер Obj1 останется прежним. Если сборщик мусора освободит Obj1, он освободит весь граф ссылок размером 41. Однако, если сборщик мусора освободит только Obj2, он не освободит Obj5, потому что на него по-прежнему будет ссылаться Obj6.
person
Soid
schedule
02.02.2017