![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 78
|
Товариши!
предлагаю собрать здесь все необходимые действия для того, чтобы объект мог быть удален 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. Внимание! Список не полный! ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А зачем битмап клонировать постоянно, когда можно использовать один и тот же для отображения?
|
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,155
|
Жаль что нет принудительной очистки памяти - контролировать все ссылки бывает жутко трудно.
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 78
|
а клонировать, потому что в нескольких слотах могут быть одинаковые предметы с одинаковыми картинками.
Цитата:
А вот то что нет в AS методов, которые помогли бы в решении проблемы утечки памяти это не есть гут. например нет деструктора..т.е. приходится самому вызывать свои методы очистки. А так бы написал delete obj и все в поряде ![]() Кстати решил проблему утечки памяти, связана как обычно с невниманием. ![]() А GC помоему достаточно оптимально работает,т.е. для каждого момента флэшки определятся пик памяти если вдруг текущая память увеличивается до пика вызывается GC, если вдруг текущая память привышает пик, то пик увеличивается до нового значения и опять зачистка... |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
И что? Bitmap-ов может быть сколько угодно, а BitmapData — одна на всех.
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 78
|
Цитата:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|