Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Порядок удаления дисплей-объектов из памяти (http://www.flasher.ru/forum/showthread.php?t=119739)

hipot 29.12.2008 13:48

Порядок удаления дисплей-объектов из памяти
 
Здравствуйте!
Вопрос следующий: почитал форум и хочу наконец-то понять порядок удаления объектов из памяти и ваше мнение. Как я понял, на физическое удаление мы не можем повлиять никак (это уже от того "как встанут звезды" и когда выполнится GC зависит), однако хотелось бы точно знать, какие правильные (!) и необходимые действия AS3 надо выполнить для этого. Из форума понял следующий порядок:
1) removeChild удалить объект из дисплейного листа
2) отвесить всех слушателей
3) присвоить всем ссылкам на объект null

Вопрос1 - Это все необходимые действия?
Вопрос2 - Разъясните: Дисплейный лист - это абстрактная реализация отображения, т.е. она не существует как член класса основного мувиклипа, т.е. в нем не могут оставаться ссылки на объект после removeChild?
Вопрос3 - Наткнулся на некоторую статью по вопросу работы с памятью в AS3, там советуют использовать WeakReference, в то время как на форуме я нашел мнение, что их лучше вообще не использовать (т.к. не ясно вообще когда такие объекты удалит GC).

Если ваш ответ зависит от моих действий (что чаше всего так и бывает, т.е. чаще всего задача решается по ходу), так вот, я в библиотеке для мувиклипа залинковал класс и реализовал его. А в основном классе мувиклипа множу эти объекты и через определенное время удаляю, удаляю как в пунктах 1,2,3 написанных выше, однако память растет.

Psycho Tiger 29.12.2008 21:14

1) Чтобы GC сработал, да. (поправка: в смысле, чтобы когда GC сработал он это забрал)
2) Ну, DisplayList - что то вроде массива (абстрактно говоря). Удаляя со сцены что то - мы удаляем этот элемент массива. Конечно, получить теперь этот элемент невозможно. Добавляя на сцену - добавляем туда элемент. (сцена=контейнер)
3) Не приходилось использовать WeakReference. За время своего прибывания на форуме понял, что __etc, iNils, Nirth (поставлены по алфавитному порядку) плохого не посоветуют, поэтому да, лучше не использовать.

Про память - трейд искать лень, но памят будет расти если повесишь просто ENTER_FRAME или Timer. Таков фп.


Часовой пояс GMT +4, время: 14:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.