При любом взаимодействии пользователя с веб-страницей и с каждой новой строчкой кода создаются переменные, объекты и функции. Если закрывать на это глаза, то объекты будут накапливаться, засорять память браузера и мешать работе интерфейса.⠀
Причины этой проблемы:
▪️ слушатели событий — при присоединении к их элементам автоматически создаётся ссылка на функцию слушателя, что мешает освобождению памяти;
▪️ циркулярные ссылки — два или несколько объектов ссылаются друг на друга и создаётся цикл, который трудно разорвать;
▪️ глобальные переменные — они доступны из любой точки кода, это затрудняет определение момента, когда они становятся не нужны.
Утечки можно избежать, если знать алгоритмы управления памятью JS ⬇️
🔸️ Сборщик мусора.
Его работа — определение и удаление объектов, которые больше не нужны приложению, он отслеживает на какие объекты и переменные в коде идут ссылки. Если он видит, что объект уже не используется, то удаляет его.⠀
🔸️ Стек.
Быстрый и эффективный, используется для хранения данных, которые нужны только во время выполнения функции, а также для быстрого доступа и управления памятью.⠀
🔸️ WeakMap and WeakSet
Специальный инструмент, который помогает создавать слабые ссылки на объекты и переменные. Слабые ссылки предотвращают утечку памяти, вызванных циркулярными ссылками и не мешают сборщику мусора освобождать память.⠀
🔸️ API сборщика мусора.
С его помощью можно запускать сборку мусора вручную, это важно при проблемах с производительностью и отладке утечек памяти.⠀
🔸️ Профилировщики.
Помогают отслеживать производительность приложения и определять области, где используется большое количество памяти, но поддерживаются не всеми движками JS и браузерами, поэтому перед использованием проверяйте их совместимость.⠀
Управление памятью — важный момент, который требует от веб-разработчика внимания и контроля для создания конкурентноспособных приложений.
#methed_про_ит