![]() |
утечка памяти - решение проблемы
Товариши!
предлагаю собрать здесь все необходимые действия для того, чтобы объект мог быть удален GC. Например сейчас сделал перемещение предметов в слотах у пользователя в инвентаре. При перемещении используется метод BitmapData.clone(), и BitmapData.dispose(); Так же делаются эллементарые действия removeChild, displObj(DisplayObject) = null, removeEventListener, classObj(Объект класса).Destroy()(в дестрое делаются все действия чтобы объект мог удалить gc); Но этого как я заметил вовсе недостаточно. Давайте соберем все необходимые действия!:) Начну: Чтобы объект стал доступным для удаления с помощью GC необходимо: 1. если он является child'ом другого объекта нужно методом removeChild(At)() удалить его из списка child'ов. 2. удалить все листенеры этого объекта с помощью removeEventListener. 3. если есть какие то BitmapData которые надо удалить, то использовать метод BitmapData.dispose(); 3. необходимо чтобы на объект небыло внешних ссылок, для этого нужно все внешние ссылки приравнять к null. 4. Если объект является объектом вашего класса, то необходимо удалить все внутренние объекты как описано в пунктах 1,2,3. Для этого можно завести отдельный метод Destroy(), где и будет осуществляться зачистка. 5. Для верности приравнять ваш объект к null. Внимание! Список не полный!:) |
А зачем битмап клонировать постоянно, когда можно использовать один и тот же для отображения?
|
Жаль что нет принудительной очистки памяти - контролировать все ссылки бывает жутко трудно.
|
а клонировать, потому что в нескольких слотах могут быть одинаковые предметы с одинаковыми картинками.
Цитата:
А вот то что нет в AS методов, которые помогли бы в решении проблемы утечки памяти это не есть гут. например нет деструктора..т.е. приходится самому вызывать свои методы очистки. А так бы написал delete obj и все в поряде:) Кстати решил проблему утечки памяти, связана как обычно с невниманием.:) А GC помоему достаточно оптимально работает,т.е. для каждого момента флэшки определятся пик памяти если вдруг текущая память увеличивается до пика вызывается GC, если вдруг текущая память привышает пик, то пик увеличивается до нового значения и опять зачистка... |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +4, время: 08:21. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.