Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: circular reference, garbage collection, reachability

Соберёт ли сборщик мусора два объекта с циклической ссылкой при потере внешних ссылок?

Вопрос проверяет понимание алгоритмов обнаружения мусора (включая циклические ссылки).

Короткий ответ

Да, сборщик мусора удалит такие объекты. Современные GC (например, G1) определяют недостижимость через достижимые корни (GC roots), а не через подсчёт ссылок.

Длинный ответ

Как это работает:

  1. Объекты A и B ссылаются друг на друга, но нет внешних ссылок на них.

  2. GC Roots (например, стек потоков, статические поля) не содержат ссылок на A или B.

  3. Алгоритм mark-and-sweep помечает недостижимые объекты и удаляет их.

Пример:

class Node {
    Node next;
}

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

Уровень

  • Рейтинг:

    1

  • Сложность:

    8

Навыки

  • Java

    Java

Ключевые слова

#circular reference

#garbage collection

#reachability

Подпишись на Java Developer в телеграм