Создание элементов, забивает ли память браузеру
for (let key in obj)
document.createElement(Type)
Предположим, цикл выполняется бесконечно. Создает элементы, забивается ли память у пользователя?
То есть, ресурсы браузера к примеру? Когда создается один и тоже элемент...
let tt;
for (let key in obj)
tt = document.createElement(Type)
Так, допустим каждый раз перезаписываем переменную. При этом тоже создаем один и тот же элемент...
Ответы (1 шт):
Если коротко — да, но обратите внимание если на объект не остается ссылок (Вы его перезаписываете) он будет уничтожен — память освободится через какое-то время сборщиком мусора. Так как новый объект создается не в том же участке памяти, он не сможет переиспользовать старую память пока она не освободится. Поэтому лучше не делать бесконечные циклы с таким кодом, тем более что используя createElement выделение памяти происходит скрыто (в отличие от new где Вы точно знаете под что выделяется память)
Как правило, если Вы нуждаетесь в таких решениях, значит конечный алгоритм плохо продуман, попробуйте другой подход.
Dev-tools позволяют программисту контролировать много различных аспектов, в том числе и определять утечки памяти, когда вкладка с каждым новым действием или сама по себе начинает расходовать все больше и больше памяти.
Для того чтобы проверить расход памяти воспользуйтесь следующими шагами:
- Открываете страницу вашего вебприложения
- Нажимаете F12 для вызова
dev-tools - Переходите на вкладку
ПамятьилиMemory
Так как подсчет статистики расхода памяти трудоемкий процесс для браузера мы используем снимки или snapshots в которых отображается вся статистика на конкретный момент времени, сделав несколько снимков (кнопка фотопарат в Firefox) через разный период времени Вы потом имеете возможность сравнивать их с помощью кнопки Compare snapshots (пересекающиеся круги в Firefox) если используете Firefox.
В Chromium картинка будет следующей:

