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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

Регистрация: Apr 2009
Сообщений: 409
По умолчанию Juggler на что уходит память?

Приветствую, тестируя анимации, обнаружил что куда-то постоянно утекает память, создавая неприятные фризы после сборки мусора. вот демо пример вызывающий проблему
Код AS3:
		public function JugglerLeak() 
		{
			for (var i:int = 0; i < 200; i++) {
				var quad:Quad = new Quad(30, 30, 0xffffff * Math.random());
				addChild(quad);
				moveToRand(quad);
			}
		}
		private function moveToRand(quad:Quad) {
			Starling.juggler.tween(quad,100,{
				x:Math.random()*1000,
				y:Math.random() * 670
			})
		}
Каждую секунду расходуется около 200 кб памяти, если отключить visible - ниче не меняется. без анмиации - расход памяти нормальный
Scout в allocation выдает расход памяти на уровне 15 кб в секунду, что не соответствует действительности. Я в принципе не могу представить куда она может уходить, если сами твины берутся из пула, а потом лишь обновляются, диспетчеризация событий идет только в самом конце .отсюда вопрос, что я упускаю из вида, и как этого избежать? http://prntscr.com/amg22v

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Это не твоя тема на старлинговском форуме с аналогичным вопросом случайно?
Какая версия старлинга, кстати? У меня не наблюдается никаких расходов/перерасходов памяти джаглером
__________________
Ко мне можно и нужно обращаться на ты)

Старый 01.04.2016, 02:41
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 3  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Да, соя тема) Старлинг 1.7 плеер 20.0, проблема наблюдается и в релизной и дебажной версии. у тебя код выше выполняется без перерасходов? какая версия у тебя?

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Проверил. С перерасходами, но дело совсем не в джаглере. Я заменил его на TweenMax и увидел ту же картину. Сдается мне старлинг просто накапливает кучу каких-то данных при отрисовке, которые потом собираются сборщиком мусора. А может и сама ВМ накапливает, особо углублено ковыряться было в лом) В общем-то, сборщик собирает все, и потребление возвращается к тому значению, с которого начиналось. Напрягает только момент сборки мусора. Но это ведь совершенно не оптимизированный код. Такие вещи лучше всего делать через QuadBatch, (или MeshBatch в новом старлинге) и отрисовывать все эти штуки одним скопом
__________________
Ко мне можно и нужно обращаться на ты)

Старый 01.04.2016, 12:29
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 5  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
я тоже сразу подумал что дело в рендере, но при выключенном visible он не происходит. потом попробовал удаление со сцены, чтобы исключить пересчет матриц, но результат тот же. только что проверил, проблему создают даже пустые твинеры, поэтому quadBatch тут врядли чем то поможет) Просто не пойму на что она может выделяться. есть объекты, у которых каждый кадр должно меняться свойство. хендлеров update complete нет, событий тоже. получается анимация только на cpu
Код AS3:
Starling.juggler.add(new Tween({}, 15));


Последний раз редактировалось faraday; 01.04.2016 в 12:45.
Старый 01.04.2016, 12:45
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
потом попробовал удаление со сцены, чтобы исключить пересчет матриц
Как удаление со сцены может исключить пересчет матриц?
Цитата:
только что проверил, проблему создают даже пустые твинеры, поэтому quadBatch тут врядли чем то поможет)
Да не твины там перерасходы создают. Посмотри исходники твинов, сам убедишься, что там все чисто. Скорее всего перерасход от EnterFrame событий идет. Хотя тоже вряд ли, так как обычно никаких перерасходов не наблюдается
__________________
Ко мне можно и нужно обращаться на ты)

Старый 02.04.2016, 16:23
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 7  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Цитата:
Как удаление со сцены может исключить пересчет матриц?
объект не рендерится, касания не отслеживаются, больше вроде и не зачем пересчитывать)
А что можно с этим перерасходом сделать? у меня на карте много подвижных объектов, а каждые 10 сек фризится вся карта. если я создаю пустые твины, откуда там взяться enterFrame?
Двигая по enterFrame никаких проблем, и потребление памяти на нуле
Код AS3:
		private function manualMove(e:Event):void 
		{
			for (var i:int = quads.length-1; i > 0; i--){
				var quad:Quad = quads[i];
				var offset:Number = Math.random() * 5;
				quad.x += offset; quad.y += offset;
			}
		}

Старый 04.08.2016, 20:52
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 8  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Ни у кого никаких идей не появилось случайно куда расходуется память в простом твинере из 4 строк? при том что juggler их берет из пула

Старый 05.08.2016, 10:45
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 9  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
есть у меня проект на старом старлинге 1.х, никаких там нет фризов с твиинами, хотя сотни одновременно объектов твинятся

сейчас соберу тестовый прож

Добавлено через 25 минут
не заметно фризов, сборщик над чем то регулярно работает
flashdevelop, fp22, starling 1.7
фризы есть на 5к объектов
а что у вас за процессор?

Старый 05.08.2016, 21:37
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 10  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
на этой демо сцене фризы не заметны да, но память очень быстро куда-то расходуется, не понятно куда. сборщик каждые 15 сек сбрасывает

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

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

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


 


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


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