Skip to main content
Практика завдань

Що таке збирач сміття в JavaScript?

Збірник сміття — це вбудований механізм у JavaScript, який автоматично керує пам'яттю. Він відповідає за вивільнення пам'яті, зайнятої об'єктами, які більше не використовуються в програмі.

Ви не керуєте пам'яттю вручну — JavaScript-движок робить це за вас (наприклад, V8 у Chrome/Node.js).

Як працює збірник сміття?

JavaScript виділяє пам'ять для змінних та об'єктів, коли вони створюються, і вивільняє її, коли вони більше не доступні.

Основний принцип:

Об'єкт вважається "сміттям", якщо на нього більше немає посилань.

Приклад:

javascript
let user = { name: "Alice" }; user = null; // Тепер об'єкт може бути видалений з пам'яті

Алгоритми, що використовуються в GC

Позначити та прибрати

Найпоширеніший алгоритм:

  • Позначає всі об'єкти, доступні через змінні (кореневі об'єкти).
  • Всі інші об'єкти видаляються як "сміття".

window / глобальні змінні

Об'єкт A

Об'єкт B

Об'єкт C (недоступний)

У цьому прикладі об'єкт C є недоступним і буде видалений.

Підрахунок посилань

Кожен об'єкт зберігає число, що показує, скільки посилань на нього вказує. Якщо лічильник = 0, об'єкт видаляється.

Недолік: циклічні посилання не видаляються.

javascript
let a = {}; let b = {}; a.ref = b; b.ref = a; // Обидві змінні null, але об'єкти все ще посилаються один на одного a = null; b = null; // Потенційна витрата пам'яті!

Як уникнути витоків пам'яті?

  • Видаляйте невикористовувані таймери: clearInterval, clearTimeout
  • Очищайте підписки, обробники подій
  • Обнуляйте великі об'єкти та посилання на DOM: ref.current = null
  • Уникайте глобальних змінних
  • Використовуйте WeakMap, WeakSet — вони не перешкоджають збору сміття

Ознаки витоків пам'яті

  • Постійне зростання пам'яті під час використання
  • Затримки, зависання, лаги
  • Високе споживання оперативної пам'яті в DevTools → вкладка Performance/Memory

Важливо:

Збір сміття в JavaScript є не миттєвим — це процес, який виконується періодично. Тому вивільнення пам'яті може відбуватися з затримкою.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань