Базовый принцип работы Garbage collector (GC)
GC - очищает память (HEAP) от данных на которые никто не ссылается и они помечены как “на удаление”. Подробнее о работе HEAP и ссылок на блоки памяти будет в следующей статье.
Проведем простенький эксперемент: Создадим 2 функции. let leak; function createGarbage() { // Создаем массив на 10 млн элементов (~80 МБ) leak = new Array(10000000).fill(“data”); console.log(“Объект создан”); } function clearGarbage() { // Удаляем единственную ссылку на массив leak = null; console.log(“Ссылка удалена, объект готов к сборке”); }
- Ставим браузер в режим записи (Perfomance -> start record) - Вызываем в консоли createGarbage() - Вызываем в консоли clearGarbage() - Останавливаем запись Perfomance
Что получаем: - Увеличенную память на вкладке до 161МБ, это и массив ссылок, и сама data и все окружение которое туда влезло, включая devtools. - После вызова clearGarbage() (та самая лесенка на последней строке скриншота). GC - удалил все данные из HEAP и освободил память