Показать сообщение отдельно
Старый 11.09.2006, 23:09
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 11  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
artcraft, спасибо... и очень хорошо бы с русским переводом, т.к. там важно буквально каждое слово.

Похоже GC срабатывает, когда происходит перераспределение памяти. Например, если к моему последнему тесту, благополучно проработавшему два часа так и не удалив мувик из памяти, добавить в руте такой код:
Код:
var ar:Array = new Array();
var tm:Timer = new Timer(1000);
tm.addEventListener("timer", timerHandler);
tm.start();

function timerHandler(event:TimerEvent):void {
	trace("timerHandler: " + getTimer());
	for (var i:uint=0; i<1000; i++) {
		ar.push( new Sprite() );
	}
}
Фактически просто начинаем активно "кушать" память. То реальное удаление мувика Test из памяти происходит примерно через три секунды (перестает срабатывать EnterFrame).
Значит useWeakReference из функции addEventListener работает корректно, и его можно использовать для событий типа click, mouse..., focus... Которые зависят от самого мувика.
Для событий срабатывающих самостоятельно, типа enterFrame, activate... придется прописывать отдельную функцию на удаление всех созданных Listeners и запускать ее вручную или по Event.REMOVED, смотря по ситуации.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.