![]() |
Порядок удаления дисплей-объектов из памяти
Здравствуйте!
Вопрос следующий: почитал форум и хочу наконец-то понять порядок удаления объектов из памяти и ваше мнение. Как я понял, на физическое удаление мы не можем повлиять никак (это уже от того "как встанут звезды" и когда выполнится GC зависит), однако хотелось бы точно знать, какие правильные (!) и необходимые действия AS3 надо выполнить для этого. Из форума понял следующий порядок: 1) removeChild удалить объект из дисплейного листа 2) отвесить всех слушателей 3) присвоить всем ссылкам на объект null Вопрос1 - Это все необходимые действия? Вопрос2 - Разъясните: Дисплейный лист - это абстрактная реализация отображения, т.е. она не существует как член класса основного мувиклипа, т.е. в нем не могут оставаться ссылки на объект после removeChild? Вопрос3 - Наткнулся на некоторую статью по вопросу работы с памятью в AS3, там советуют использовать WeakReference, в то время как на форуме я нашел мнение, что их лучше вообще не использовать (т.к. не ясно вообще когда такие объекты удалит GC). Если ваш ответ зависит от моих действий (что чаше всего так и бывает, т.е. чаще всего задача решается по ходу), так вот, я в библиотеке для мувиклипа залинковал класс и реализовал его. А в основном классе мувиклипа множу эти объекты и через определенное время удаляю, удаляю как в пунктах 1,2,3 написанных выше, однако память растет. |
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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.