Найти тему
Онлайн-школа METHED

УПРАВЛЕНИЕ ПАМЯТЬЮ JAVASCRIPT

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

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

Утечки можно избежать, если знать алгоритмы управления памятью JS ⬇️

🔸️ Сборщик мусора.
Его работа — определение и удаление объектов, которые больше не нужны приложению, он отслеживает на какие объекты и переменные в коде идут ссылки. Если он видит, что объект уже не используется, то удаляет его.⠀

🔸️ Стек.
Быстрый и эффективный, используется для хранения данных, которые нужны только во время выполнения функции, а также для быстрого доступа и управления памятью.⠀

🔸️ WeakMap and WeakSet
Специальный инструмент, который помогает создавать слабые ссылки на объекты и переменные. Слабые ссылки предотвращают утечку памяти, вызванных циркулярными ссылками и не мешают сборщику мусора освобождать память.⠀

🔸️ API сборщика мусора.
С его помощью можно запускать сборку мусора вручную,  это важно при проблемах с производительностью и отладке утечек памяти.⠀

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

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

#methed_про_ит