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

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

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

Регистрация: Dec 2009
Адрес: Питер
Сообщений: 45
Question Как отчистить память от уничтоженных объектов?

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

Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite 
	{
		[Embed(source='assets/testSprite.swf', symbol='testSprite')]
		private static const embedResourse : Class;
 
		private var _testSprite : Sprite;
		private var _y : Number = 0;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
 
			stage.addEventListener(MouseEvent.CLICK, onChangeSprite);
		}
 
		private function onChangeSprite( e : MouseEvent ) : void {
 
			if ( _testSprite ) {
				removeChild(_testSprite);
				_testSprite = null;
			}
 
			_testSprite = new embedResourse();
			_testSprite.y = _y;
			addChild(_testSprite);
 
			if ( _y > 200 ) _y = 0;
			_y += 20;
		}
 
	}
 
}
Подскажите, в чем может быть дело?

P.S. В архиве FD проект примера.
Вложения
Тип файла: rar testMemory.rar (924.6 Кб, 22 просмотров)

Старый 11.10.2010, 10:54
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 2  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
дело в том что вы не дожидаетесь вызова gc. чтобы проверить очистилась ли память от объектов или нет.
__________________
Блог, Twitter
Брюзга.

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

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
запустите профилирование и принудительно включите gc, увидите разницу
__________________
Коллекционирую чужие ActionScript Блоги

Старый 11.10.2010, 11:37
parl вне форума Посмотреть профиль Отправить личное сообщение для parl Найти все сообщения от parl
  № 4  
Ответить с цитированием
parl

Регистрация: Dec 2009
Адрес: Питер
Сообщений: 45
В том то и дело, в профайлере запускаю gc, память немного падает, но незначительно.
Пример:
Нет объектов на сцене - 5688кб
Первая интерация - 10476кб
40ая интерация - 24948
После запуска gc - 21100кб (10000кб пропало)

Старый 11.10.2010, 11:50
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 5  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
gc за раз может не почистить все сразу

Старый 11.10.2010, 12:22
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 6  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
gc тормоз, лучше строить проект так, чтобы по минимуму пришлось удалять объекты, иначе рискуете все забить и начнуться тормоза.
Но пока непонятно вот что - вы же удаляете объект и тут же назначаете новый этой же переменной, почему память должна очиститься?

Я бы лучше удаленный ресурс делал через "load/unload" чем "removeChild".

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

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
ну блин запустите его еще раз если рано или поздно все удалить значит есть мысль пересмотреть архитектуру, а если что то останется то тут вопрос уже в том что значит что-то до конца не удаляется)
__________________
Коллекционирую чужие ActionScript Блоги

Старый 11.10.2010, 15:53
parl вне форума Посмотреть профиль Отправить личное сообщение для parl Найти все сообщения от parl
  № 8  
Ответить с цитированием
parl

Регистрация: Dec 2009
Адрес: Питер
Сообщений: 45
Он не удаляет впринципе, не рано, не поздно, вообще не удаляет.
Может быть пробелема во флеш плеере, версия там какая-нибудь без GC?

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Вообще не такие уж и критичные цифры, что бы искать "проблемы во флеш плеере".

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

Регистрация: Dec 2009
Адрес: Питер
Сообщений: 45
Вообще можно и до 1Гб нагрузить, все-рано ничего не чистится. В дисплей листе всего один объект, а 1Гб памяти занят

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

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

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


 


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


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