Sobes.tech
Middle

Ce știi despre colectorul de gunoi în JavaScript? Ce sunt scurgerile de memorie și în ce cazuri pot apărea?

sobes.tech AI

Răspuns de la AI

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

Утечки памяти возникают, когда объекты остаются в памяти, хотя они уже не нужны, из-за сохранения на них ссылок. Это приводит к росту потребления памяти и может замедлять приложение.

Типичные причины утечек:

  • Глобальные переменные, которые не очищаются.
  • Замыкания, удерживающие ссылки на большие объекты.
  • Событийные слушатели, которые не удаляются после использования.
  • Кэширование данных без ограничения размера.

Пример утечки через слушатель:

function setup() {
  const element = document.getElementById('button');
  element.addEventListener('click', () => {
    // обработчик
  });
}
// Если элемент удалён из DOM, но слушатель не удалён, память не освободится

Для предотвращения утечек важно удалять слушатели, очищать ссылки и следить за жизненным циклом объектов.