Junior
56
questionbank

Что такое сборка мусора в Java?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Автоматический процесс управления памятью, который удаляет неиспользуемые объекты из кучи (heap), освобождая занимаемое ими пространство. Garbage Collector (GC) определяет, какие объекты доступны (referenceable) из работающих частей программы, а какие — нет (unreachable), и удаляет последние.

Основные этапы:

  1. Marking (Пометка): GC определяет, какие объекты живы ( reachable) начиная с корней (например, локальные переменные активных потоков, статические переменные).
  2. Sweeping (Очистка): GC проходит по куче и удаляет все объекты, не помеченные как живые.
  3. Compacting (Компактизация, необязательно): Перемещает живые объекты, чтобы уменьшить фрагментацию памяти.

Достоинства:

  • Упрощает разработку, избавляя от ручного управления памятью.
  • Снижает риск утечек памяти (memory leaks) и ошибок доступа к освобожденной памяти (dangling pointers).

Недостатки:

  • Могут возникать паузы в работе приложения (Stop-the-World events) во время сборки мусора.
  • GC требует вычислительных ресурсов.

Различные алгоритмы сборки мусора (Serial GC, Parallel GC, CMS, G1, ZGC, Shenandoah) отличаются по производительности, задержкам и используемой памяти.

java