Null и delete () в отношении сборки мусора - PullRequest
0 голосов
/ 05 ноября 2010

Во всяком случае, если бы я написал что-то вроде:

var h = 5;  
delete h; 

... Я бы исключил ссылку, но не память.
Теперь, если я установлю переменную на null, это заменит память нулевым объектом?

var h = 5;  
h = null;

Если это так, не лучше ли не только delete() ссылка, но и заменить память объектом null, для лучшей оптимизации памяти?

var h = 5;  
h = null;  
delete h; 

Если я хочу создать загрузку динамических объектов в длинном и сложном скрипте, каков наилучший способ избавиться или заставить сборщик мусора удалять объекты? Потому что, кроме того, что я просто удалил ссылки, я читал, что вы можете намекнуть сборщику на освобождение памяти, если он занят нулем ...

Ответы [ 2 ]

5 голосов
/ 05 ноября 2010

Там нет destroy.Вы, вероятно, думаете о delete, но delete нельзя использовать для удаления переменных, только свойства.(Хотя в настоящее время браузеры позволяют вам сойти с рук, с разными результатами.) Вы можете удалить глобальные переменные, удалив их из window, но не из локальных.

В любом случае вам не нужно думать об этомвещей в JavaScript.Установите для переменной значение null, и если больше не будет переменных, указывающих на один и тот же объект, он будет собирать мусор в какой-то момент в ближайшем будущем.Объем пространства, занимаемого записью переменной, указывающей на ноль, крошечный и не о чем беспокоиться.Если вы не сделаете преднамеренное закрытие, оно все равно выйдет из области видимости при выходе из локальной функции и станет пригодным для GC.

Я читал, что вы можете намекнуть сборщику на освобождение памяти, если онзаняты нулем ...

Нет.Вы просто удаляете ссылки, GC заберет теперь осиротевшие объекты и освободит память на досуге.Вы не можете сказать по этому поводу.

4 голосов
/ 05 ноября 2010

Просто отбросьте все ссылки на загрузку и позвольте сборщику мусора творить чудеса.

...