![]() |
"Природа" существования и удаления объектов
Хотелось бы узнать, как стереть само значение объекта из приложения во время работы (дабы оно не засоряло память).
removeChild всего лишь удаляет DisplayObject из списка отображения а delete по тому же Муку: "Удаляет динамическую переменную экземпляра объекта." Из списка отображения убрали, переменную удалили, а что с самим объектом? его как снести? Второй момент - если переменной с объектом присвоить другой объект, то значение первичного объекта удаляется или переменная просто начинает ссылаться на другой объект? |
Цитата:
По первому пункту ничего не знаю, но всё скорее упирается в запуск этого GC |
Тот же Мук, в своей книге отлично дает понять, что "вручную" удалить из памяти созданный объект или значение переменной нельзя, можно лишь сделать объект доступным для "сборки мусора" удалив все существующие ссылки на него.
Система сборки мусора (Garbage Collector) предназначена для автоматической очистки памяти, и запускается, когда минимальное ее количество, отведенное Flash ролику, превышается. В зависимости от сложности программы, "сборщик" периодически проверяет и "помечает" объекты, к которым больше нельзя обратится, как "доступные для удаления", после чего помеченные значения впоследствии удаляются в "цикле зачистки". Самостоятельно запустить и управлять системой сборки мусора во Flash невозможно. Она запускается самостоятельно и отлично справляется со своей задачей (при минимуме усилий от программиста). В общем чтобы "удалить" объект из памяти достаточно позаботится об отсутствии ссылок на него (присвоить переменной значение новое значение, очистить интервал, удалить слушатель события и.т.д...) Поправьте меня, если в чем-то ошибся. |
таким образом конструкция:
Код AS3:
|
removeChildAt
|
а если индексов сотни? ))))
но возможность есть - согласен. Спасибо всем! разобрался |
Эм... То есть ссылок на объект нет, но объект находится в списке отображения, то GC его не съест, так как мы можем обратиться к нему методами клипа-контейнера?
Просто слышал где-то истории про исчезающие с экрана кнопки, ссылки на которые терялись и их съедал GC... Аж жуть... |
ссылки могут потеряться. Недавно столкнулся с этим.
Например, если ты создаешь в цикле большое количество лоадеров: Код:
loader = new Loader (); Пришлось сделать так Код:
tempArray.push(loader);Такая же проблема есть у стандартных адобовских Tween. Если не сохранить твин в ссылке - он может умереть. |
Да, про твины в курсе.
2 iflamberg, а если экземпляр лоадера или подгружаемого объекта сразу кинуть в список отображения в твоем случае? Тогда его съест |
очень сомневаюсь
|
| Часовой пояс GMT +4, время: 21:38. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.