Показать сообщение отдельно
Старый 09.11.2004, 13:32
Джа вне форума Посмотреть профиль Отправить личное сообщение для Джа Посетить домашнюю страницу Джа Найти все сообщения от Джа
  № 8  
Джа

Регистрация: Nov 2004
Адрес: на Ямайке Любит. Знает.
Сообщений: 4
недавно Делимитер поведал мне о чудо-граблях, как раз на тему сборщика мусора и циклических ссылок.

грабли дивной силы: это утечка памяти, которая может уронить плеер а то и ось при длительной работе приложения.

суть в том, что объекты типа XMLNode, созданные в одном контейнере, и ссылающиеся друг на друга, не удаляются из памяти при удалении контейнера (что происходит с объектами других типов).

запустите этот код в стандалоун плеере, откройте таск манагер, и наблюдайте с какой скоростью увеличивается память, расходуемая приложением.
Код:
_global.x = "Jackdaws love my big sphinx of quartz...\t";
// делаем длиииинную строку
for (var i = 0; i<10; i++) {
	_global.x += _global.x;
}
//
this.onEnterFrame = function() {
	// удаляем клип тест
	test.removeMovieClip();
	// создаём клип тест
	this.createEmptyMovieClip("test", 1);
	//
	for (var i = 0; i<50; i++) {
		// создаём в клипе тест объект XMLNode
		test["node"+i] = new XMLNode(3, x);
		// ставим ссылку на объект, созданный в предыдущей итерации
		test["node"+i].link = test["node"+(i-1)];
		//
	}
};
this.onMouseDown = function() {
	// остановить
	delete this.onEnterFrame;
};
рекомендации лучших граблестроителей.
__________________
волны воют, а люди воюют.. всё зигзагообразно