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

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

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

Регистрация: Jan 2009
Сообщений: 5
По умолчанию как правильно выгружать мувики из памяти?(garbage colection) для player9

столкнулся с проблемой что память освобождается не вся при использовании плеера9(System.gc() и unloadAndStop нету к сожалению)

пример кода (b1 b2 -кнопки на сцене, сont- контейнер свф)

Код AS3:
import flash.events.Event;
import flash.display.Loader;
b1.addEventListener(MouseEvent.CLICK,loadswf);
b2.addEventListener(MouseEvent.CLICK,unloadswf);
var swfContent;
var myloader:Loader;
function loadswf(e:MouseEvent) {
	var myrequest:URLRequest = new URLRequest("external.swf");
	myloader= new Loader();
	myloader.load(myrequest);
	myloader.contentLoaderInfo.addEventListener(Event. COMPLETE, addMovie,false,0,true);
}
 
function addMovie(e:Event) {
	myloader.contentLoaderInfo.removeEventListener(Event. COMPLETE, addMovie);
	swfContent = e.target.content;
  	cont.addChild(swfContent);
}
function unloadswf(e:MouseEvent) {
	myloader.unload();
	cont.removeChild(swfContent)
	myloader=null;
	while( swfContent.numChildren > 0 ){
		swfContent[swfContent.getChildAt( 0 )] = null;
		swfContent.removeChildAt( 0 );
	}
 
	swfContent= null;
	//GC hack
	try {
			new LocalConnection().connect('foo');
			new LocalConnection().connect('foo');
	} catch (e:*) {}
}
какие будут советы?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
System.gc() и unloadAndStop нету к сожалению
С чего вы взяли, что нет System.gc()? Он как раз в девятой (9.0.115.0) и появился. Другое дело, что этот метод работает только в дебаге.
Цитата:
какие будут советы?
1. Убедиться, что в загружаемой флешке закрыты все потоки, остановлены таймеры, удалены слушатели.
2. Сначала занулить внешние ссылки, а потом уже unload.
3. Не использовать хаки.
__________________
משיח לא בא
משיח גם לא מטלפן

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

Регистрация: Jan 2009
Сообщений: 5
вот имеено что в загружаемой флешке нет никаких листенеров и потоков.(несколько анимированых мувиклипов)
открываю process explorer. смотрю использование памяти при загрузке занялось 25 мб. при выгрузке ушло только примерно половина.(при просмотре Commit Charge)
а как выгрузить остальное без использования хаков? Желательно поправьте код unloadSwf если что не так, на пальцах смотриться намного эффективнее.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Если объект не может выгрузиться, хаки не помогут. process explorer не показатель, используйте профайлер для обнаружения утечек памяти.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 24.05.2011, 22:57
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от alatar Посмотреть сообщение
2. Сначала занулить внешние ссылки
Чуть подробнее можно? Внешние по отношению к внутренним? )
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Внешние на контент лоадера. )
__________________
משיח לא בא
משיח גם לא מטלפן

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А если контент лоадера рассредоточился по дисплей-листу в произвольных кустах, не принадлежащих лоадеру?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Хочешь сказать, что это не помешает его выгрузить?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 24.05.2011, 23:20
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А Вы попробуйте )
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Aug 2001
Адрес: Toronto
Сообщений: 41
в фп9 есть баг с garbage collection - имеются мемори ликс.
писать для ФП10
использовать .unloadAndStop();

профайлер кст использование памяти показывает неверно. нужно использовать именно task manager.

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

Теги
gc утечки памяти As3
Опции темы
Опции просмотра

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

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


 


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


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