Создание элементов, забивает ли память браузеру
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
картинка будет следующей: