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

Как работает в JS сборщик мусора

Сборка мусора (Garbage Collection, GC) является ключевым компонентом управления памятью, который автоматически освобождает память, используемую объектами, которые больше не доступны для приложения. Он значительно упрощает разработку приложений, поскольку не нужно явно управлять выделением и освобождением памяти. Это помогает предотвратить такие распространенные ошибки, как утечки памяти и повторное использование освобожденной памяти.

1. Фаза маркировки

Первым шагом сборки мусора является фаза маркировки. В этой фазе сборщик мусора проходит по всем активным объектам в памяти, начиная с "корней". Корни — это набор объектов, которые непосредственно доступны приложению, включая локальные переменные, статические переменные, параметры методов и т.д. Сборщик мусора идентифицирует все объекты, которые могут быть достигнуты из этих корней, и помечает их как "достижимые". Все непомеченные объекты считаются "недостижимыми" и потенциальными кандидатами на удаление.

2. Фаза очистки

После маркировки всех достижимых объектов, сборщик мусора переходит к фазе очистки. В этой фазе он освобождает память, занимаемую недостижимыми объектами. Этот процесс включает удаление ссылок на недостижимые объекты и освобождение памяти, которую они занимали.

3. Фаза компактификации (не всегда)

После очистки сборщик мусора может выполнить компактификацию, чтобы уменьшить фрагментацию памяти. В этой фазе достижимые объекты перемещаются вместе в начало кучи, что уменьшает количество разрозненных участков свободной памяти и улучшает производительность последующих выделений памяти.

Поколения объектов

Сборщик мусора использует генерационный подход, чтобы оптимизировать процесс сборки мусора. Объекты разделяются на три поколения:

  • Поколение 0: Включает новые объекты. Поскольку многие объекты умирают молодыми, поколение 0 собирается часто.
  • Поколение 1: Служит буферной зоной между часто собираемыми молодыми объектами и объектами с долгим временем жизни. Это поколение собирается реже.
  • Поколение 2: Включает объекты с долгим временем жизни. Сборка мусора в этом поколении происходит редко.

Сборка мусора автоматизирует управление памятью, предотвращает распространенные ошибки управления памятью и помогает обеспечить стабильность приложения. Она использует комбинацию маркировки, очистки и, при необходимости, компактификации для управления памятью эффективно.

April 25, 2024, easyoffer

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