Как удалять неиспользуемые объекты из массива?

Есть некоторый массив с объектами. В некоторый момент времени объектов в этом массиве может стать очень много. Хотелось бы это как-то оптимизировать чтобы не перегружать ПК пользователей, особенно если ПК старые и слабые. Логично удалять из массива старые, неиспользуемые объекты, дабы освобождать память. Вопрос в том, как понять какие объекты старые? Можно ли в JS как-то отслеживать событие обращения к объекту? Тогда можно было бы при каждом обращении к нему сохранять timestamp и удалять объекты основываясь на нем. Если такой возможности нет, в чем я почти уверен, то какие могут быть альтернативы?
  • Вопрос задан
  • 97 просмотров
Решения вопроса 3
Piterski
@Piterski
Можно ли в JS как-то отслеживать событие обращения к объекту?


var obj = {
  get foo() {
    console.log({ name: 'foo', object: obj, type: 'get' });
    return obj._foo;
  },
  set bar(val) {
    console.log({ name: 'bar', object: obj, type: 'set', oldValue: obj._bar });
    return obj._bar = val;
  }
};


Ну или proxy
Ответ написан
Комментировать
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Тогда можно было бы при каждом обращении к нему сохранять timestamp и удалять объекты основываясь на нем.

Так и делать периодически - проходить по массиву и удалять из него старые записи.
Ответ написан
Комментировать
rqdkmndh
@rqdkmndh
Web-разработчик
Возможно, вам имеет смысл использовать WeakMap или WeakSet. Это хороший способ переложить уборку мусора на плечи движка. Почитайте об этом подробнее
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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