использовать JavaScript удалить или полагаться на сборку мусора? - PullRequest
2 голосов
/ 26 марта 2012

Вот объект и глобальное пространство имен для моего кода Javascript.

Users.Cache.data = { x:'1', y:'2', z:'3'};

Если я хочу очистить все записи в данных, у меня есть 2 способа:

1) Users.Cache.data = {}; // Сборщик мусора позаботится об удалении из памяти.

2) for(i in Users.Cache.data){ delete(Users.Cache.data[i]; }

Любой может оставить комментарий, если какой-либо конкретный подход лучше: рассмотрите его какКритерии: а) утечка памяти (похоже, ни у одной нет проблемы утечки памяти) б) производительность.

1 Ответ

4 голосов
/ 26 марта 2012

На самом деле, использование delete все еще зависит от сборки мусора; это просто делает больше работы для GC.

Вызов delete x.y не освобождает память; он просто очищает ссылку x на y.
Если y не имеет других ссылок, он станет неуткоренным и открытым для возможной сборки мусора.

Ваш второй вариант в конечном итоге создаст больше необращенных ссылок для GC.
(Обратите внимание, что я на самом деле ничего не измерял)

...