Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: garbage, collector

Как garbage collector понимает, что объект больше не нужен?

Вопрос проверяет понимание принципов работы сборщика мусора и модели достижимости объектов в JVM.

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

Garbage Collector считает объект ненужным, если до него нельзя добраться из корневых ссылок.
Корневые ссылки включают локальные переменные стека, статические поля и активные потоки.
Если объект недостижим, он может быть удалён при очередном запуске GC.
GC не удаляет объекты по таймеру или по счётчику ссылок.
Удаление происходит автоматически и недетерминированно.

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

Чтобы понять логику GC, важно сначала разобраться с понятием достижимости.

Определение

Достижимость (reachability) — это возможность добраться до объекта, начиная от корневых ссылок JVM.

Что такое GC Roots

GC Roots — это точки входа, от которых GC начинает обход объектов:

  • локальные переменные и параметры методов в stack

  • статические поля классов

  • активные потоки

  • JNI-ссылки

Алгоритм определения «мусора»

GC работает по следующей логике:

  1. Берёт все GC Roots

  2. Обходит граф объектов по ссылкам

  3. Помечает все достижимые объекты

  4. Недостижимые объекты считаются мусором

Почему не используется подсчёт ссылок

Подсчёт ссылок не подходит из-за:

  • циклических ссылок

  • высокой стоимости обновления счётчиков

Важные особенности

  • Наличие ссылки не гарантирует «живость», если она недостижима из GC Roots

  • GC может не запускаться сразу после потери ссылок

  • System.gc() не даёт гарантии очистки

Вывод

Объект считается ненужным не по количеству ссылок, а по факту недостижимости из корней JVM.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

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

#garbage

#collector

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