@SEOVirus

Приводит ли remove arr[2] к утечке памяти?

Есть большой массив объектов и такой код:

let arr = [ {obj1}, {obj2}, {obj3}, ... ];
remove arr[2];


Второй элемент станет undefined, но что с тем объектом произойдёт далее? Его подберёт сборщик мусора и высвободит или это утечка, если я так буду делать постоянно?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Как и написал Владимир Проскурин данные будут удалены из памяти, только если на этот объект больше нет ссылок. Это значит что в таком коде:
let arr = [ {obj1}, {obj2}, {obj3}, ... ];
let data = arr[2]

delete arr[2];

Объект всё равно останется в памяти, так как на него есть другая ссылка — "data"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Когда вы удаляете объект с массива, вы лишь удаляете ссылку на этот объект, а не сам объект. Если нигде больше нет ссылок на этот объект, то можете за него больше не беспокоится, его удалит сборщик мусора.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы