Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.06.2012, 02:08
dimalisovyk вне форума Посмотреть профиль Отправить личное сообщение для dimalisovyk Найти все сообщения от dimalisovyk
  № 1  
Ответить с цитированием
dimalisovyk

Регистрация: Jun 2012
Сообщений: 6
По умолчанию Засорение памяти: объекты не успевают удаляться.

Есть игра ( приложение в ВК ) http://vk.com/app1716125_82880621?ref=1.
В ней есть несколько карт. На каждой карте рисуються звездочки возле иконок миссий ( итого около 120 звездочек на каждой карте: они могуть быть серыми или желтыми ( 2 разных MovieClip ) ). При переходе из карты на карту звездочки ( и все остальное ) перерисовуються ( меняеться количество звездочек, местоположение и т.п., ну и в общем звездочки на самом деле являются частью другого класа ). Но суть вот в чем: при переходе из карты на карту все перерисовывается, но проведеный профайлинг показал что старые звездочки не успевают удаляться, и память засорается.
Такая же проблема много где. Есть ряд мест в игре где некоторые объекты не успевают удаляться. Это ведет к засорению памяти и подвисанию игры. Что подскажете? мне советовали пул объектов, но ниче такого не нашел. Плюс на сколько я знаю gc вызывать насильно нельзя.

Старый 14.06.2012, 07:47
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 2  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
120 это вообще не количество и пул объектов для данного случая не нужен. Тут скорее всего они не то чтобы не успевают удаляться, а вообще не удаляются. Либо просто сборщик мусора еще не был запущен.
Поясните подробнее динамику работы сборщика мусора. Что значит не успевают удаляться? Это значит удаляются, но много позже? Или как?

Старый 14.06.2012, 08:53
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
принудительный запуск GC http://silin.su/#AS3/utils/gc

Старый 14.06.2012, 14:53
dimalisovyk вне форума Посмотреть профиль Отправить личное сообщение для dimalisovyk Найти все сообщения от dimalisovyk
  № 4  
Ответить с цитированием
dimalisovyk

Регистрация: Jun 2012
Сообщений: 6
Да, удаляються, но позже, намного. А объекты создаються все новые и новые.

Старый 14.06.2012, 18:07
kukareku вне форума Посмотреть профиль Отправить личное сообщение для kukareku Найти все сообщения от kukareku
  № 5  
Ответить с цитированием
kukareku

Регистрация: May 2012
Сообщений: 18
Цитата:
Сообщение от silin Посмотреть сообщение
принудительный запуск GC http://silin.su/#AS3/utils/gc
А не подскажете, где взять этот silin.utils.GarbageCollector ? В архиве по ссылке Source я его не нашла

Старый 14.06.2012, 18:29
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
http://silin.su/#About

Старый 15.06.2012, 01:14
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 7  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Принудительный запуск - это костыли, хотя может быть, частое вынуждение GC работать понемногу уменьшит моменты, когда он работает очень много, ашник флешка подвисает.
По крайней мере, посмотреть, будет ли результат от беспокойства GC готовыми костылями (уже написанными за Вас) не займет много времени (сам всегда использовал другие методы типа пула или других специфических оптимизаций, ведь принудительный запуск - это только _ненадёжное_ изменение временных промежутков работы GC, а не общей производительности)

Плюс этот костыль впринципе не уменьшит тормоза от инициализации объекта, от выделения под него памяти. Только размажет время уничтожения.
Цитата:
120 это вообще не количество и пул объектов для данного случая не нужен.
На некоторых проектах наблюдал ускорение в разы при гораздо меньшем количестве объектов.

Важно ведь не количество, а объемы памяти, время на инициализацию одного объекта.


Последний раз редактировалось expl; 15.06.2012 в 01:21.
Старый 17.06.2012, 02:55
dimalisovyk вне форума Посмотреть профиль Отправить личное сообщение для dimalisovyk Найти все сообщения от dimalisovyk
  № 8  
Ответить с цитированием
dimalisovyk

Регистрация: Jun 2012
Сообщений: 6
Да, согласен с EXPL, пробовал сделать с GC, но пуллы дали намного лучше результаты.

Правда есть еще одна странная проблема. Профайлер FlashDevelop показывает что постоянно создаються объекты типа SimpleButton, хотя и мы их вовсе не создаем, плюс ниодин клас его не наследует. Может какой-то клас стандартных библиотек его наследует, или что-то такое...Пока не нашел причины.

Старый 17.06.2012, 13:45
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 9  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Цитата:
Сообщение от expl Посмотреть сообщение
время на инициализацию одного объекта.
Вот верно. Использование пула не решает проблему с корявой инициализацией объектов. Собственно о том и речь. Неужели объекты настолько сложные, что 120 штук умудряются заметно замусорить память? Судя по словам автора, в приложении есть серьезные утечки, которые пулом смягчаются, но не решаются.

Старый 17.06.2012, 16:43
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 10  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Профайлер FlashDevelop показывает что постоянно создаються объекты типа SimpleButton
Может ими кто-то что-то во Flash IDE рисовал, а потом это оказалось в подгружаемой swf-ке?

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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