Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > Cтереть объект (освободить от него RAM) |
Автор: Michael.de 6.11.2008, 02:17 | ||||
Всем привет ![]() Написал код для пояснения моего вопроса:
removeChild() удаляет объект из DOM-дерева, но не стирает его. delete стирает не все. В моей книжке об этом говорится следующее (перев. с нем.):
![]() |
Автор: Zeroglif 6.11.2008, 12:31 |
'delete' удаляет свойство, если у этого свойства нет атрибута 'DontDelete', в вашем случае такой атрибут есть, т.к. 'object' - переменная при-var-енная к глобальному объекту. Сборщик в идеале сам удалит, наша задача - не удерживать в свойствах те значения, что нам больше не нужны (отсюда кратковременные значения должны жить в функциях плюс ненужные свойства можно удалять плюс ненужные значения можно переопределять). В реальной жизни на любом движке http://blogs.msdn.com/ericlippert/archive/2003/09/17/53038.aspx может тупить, многие leaks http://msdn.microsoft.com/en-us/library/bb250448.aspx, алгоритм работы стараются http://msdnrss.thecoderblogs.com/2008/08/26/ie8-performance/... Правильная мысль, даём новое значение, старое забыто (если не зацепилось за память в другом месте)... |
Автор: Zeroglif 6.11.2008, 19:04 | ||
Вы сами ответили - object=null; |
Автор: Michael.de 6.11.2008, 22:34 |
Zeroglif, я не точно выразился - имелось в виду не значение переменной (с этим мы уже разобрались), а отказ от использования глобальной переменной (замена её чем-либо другим) ![]() |
Автор: IDVsbruck 7.11.2008, 04:04 |
А зачем? Или назначь другое значение - переменные в js нетипизированы, или присвой null - она ничего весить не будет. Гарбедж Коллектор ее не удалит, так как она находится в scope объекта window. Можно вовсе отказаться от глобальных переменных, используя обертки-замыкания, но это не очень удобно да и зачем? |
Автор: Michael.de 7.11.2008, 04:38 | ||
![]() ![]() ![]() P.S. Собственно говоря это уже другой вопрос (я мог бы другой топик создать), но у меня они оба в одном и том же скрипте возникли... P.P.S. Никто не ответил... этот вопрос снимаю, тема помечена как "решённая" ![]() |