Примеры утечек памяти в JavaScript
HTML-код
- Опубликовано: 31 мар 2022
- Утечки памяти происходят, когда браузер по какой-то причине не может освободить память от недостижимых объектов.
Обычно это происходит автоматически (Управление памятью в JavaScript). Кроме того, браузер освобождает память при переходе на другую страницу. Поэтому утечки в реальной жизни проявляют себя в двух ситуациях:
1. Приложение, в котором посетитель все время на одной странице и работает со сложным JavaScript-интерфейсом. В этом случае утечки могут постепенно съедать доступную память.
Страница регулярно делает что-то, вызывающее утечку памяти. Посетитель (например, менеджер) оставляет компьютер на ночь включённым, чтобы не закрывать браузер с кучей вкладок. Приходит утром - а браузер съел всю память и рухнул и сильно тормозит.
2. Утечки бывают из-за ошибок браузера, ошибок в расширениях браузера и, гораздо реже, по причине ошибок в архитектуре JavaScript-кода. Мы разберём несколько наиболее частых и важных примеров.
👉Telegram канал: t.me/ln_yt
👉 Telegram лс: @lnmasterJS
👉 ВК-сообщество: club194671088
🔥 Персональный блог: lnblogdjango.herokuapp.com/
#js #memory_leak
Очень полезно, спасибо! Пожалуйста, продолжайте, у вас хорошо получается - просто, с юмором, по делу и без натужных попыток привлечь внимание как на многих других каналах
Спасибо огромное за такие видео. Такого контента очень не хватает на ютубе
Спасибо! полезное видео!
Действительно, очень подробное видео по теме! На русском языке это редкость! Большое спасибо за старания! Смотрю до конца!
спасибо!🙂
Чувак, это бомба
Спасибо!
Комбо для пробития дна
А есть видос про сборщик мусора?
Конкретно у меня нет
очень жаль, что удаляете комментарии
На основании чего вы сделали такой вывод ?
@@LNMaster_ извините, ютуб оказывается удалил его из-за того, что я прикрепил ссылку.
Примитивы в JS тоже лежат в куче, потому что даже примитивы являются объектами, внутри которых лежит много всего. Например, ссылка на прототип, дескрипторы полей и тд. Исключением являются простые числа, что вы у видели в мемори дебаггере с числовой переменной. Когда мы создаем строковую переменную, ее настоящее значение (сама строка) является указателем на участок памяти в куче, а не на стеке. В отличие от C/C++ у нас нет возможности на это как-то повлиять, потому что v8 - виртуальная машина, которая как вы правильно сказали сама управляет памятью и освобождает ее.
Есть статья в v8 блоге называется Pointer Compression in V8, там про это как раз говорится подробно.