Встречается на собеседованиях • сегодня

Как Garbage Collector работает с циклической зависимостью

Garbage Collector (GC) в Java использует алгоритм mark-and-sweep для обнаружения и удаления объектов с циклическими зависимостями.

  1. Mark Phase: GC начинает с корневых объектов (например, статических полей, активных потоков, локальных переменных в стеке) и помечает все достижимые объекты.
  2. Sweep Phase: Недостижимые объекты (включая циклические зависимости, если на них нет внешних ссылок) удаляются.

Пример циклической зависимости:

java
class Node {
    Node next;
}

Node a = new Node();
Node b = new Node();
a.next = b;
b.next = a; // Циклическая ссылка
a = null;
b = null; // Теперь GC удалит оба объекта, так как они недостижимы

Важно: Современные GC (G1, ZGC, Shenandoah) оптимизированы для работы с циклами и не требуют дополнительной настройки.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы