Подтвердить что ты не робот

"Остров изоляции" коллекции мусора

Может ли кто-нибудь объяснить концепцию Острова изоляции коллекции мусора?

4b9b3361

Ответ 1

Объект Объект ссылок B. Объект B объектов Object A. Ни объект A, ни объект B не ссылаются ни на какой другой объект. Это остров изоляции.

В принципе, остров изоляции - это группа объектов, которые ссылаются друг на друга, но на них не ссылается какой-либо активный объект в приложении. Строго говоря, даже один объект без ссылок - это остров изоляции.

Изменить комментарий:

class A {
   B myB; 
} 
class B { 
   A myA; 
} 

/* later */  
A a = new A(); 
B b = new B();  
a.b = b; 
b.a = a;

Ответ 2

Вот хорошее объяснение этого термина. Выдержки:

  • "Если объект obj1 - сбор мусора, а другой объект obj2 содержит ссылку на него, то obj2 также имеет право на мусор Коллекция"
  • "Если объект obj2 может получить доступ к объекту obj1, который имеет право на мусор коллекции, то obj2 также имеет право для сбора мусора"

Это называется "Остров изоляции". "Остров изоляции" описывает один или больше объектов не имеют ссылок на их из активных частей приложение.

Ответ 3

Следует иметь в виду, что объекты собираются только в том случае, если они прямо или косвенно ссылаются на объект GC root (потоки, текущие локальные переменные, статические переменные и т.д.). Если два (или более) объекта ссылаются друг на друга, но на них не ссылаются корень, то они имеют право на сбор мусора.

Ответ 4

На самом деле, если вы понимаете концепцию Mark и Sweep of Garbage Collection, вы также поймете, на каком острове изоляция:

  • Алгоритм начинается с корней GC: основного потока, локальных переменных в основном методе, статических переменных основного класса.
  • Алгоритм проходит все ссылки на объекты, начиная с корней GC, и маркирует каждый найденный объект как живой.
  • Вся память кучи, которая не занята отмеченными объектами, восстанавливается. Он просто обозначается как свободный, по существу, не содержащий неиспользуемых объектов.
  • Если два или более объекта ссылаются друг на друга, но на них не ссылаются объекты, связанные с каким-либо корнем, они находятся на Острове Изоляции и тоже сметены.