Показать сообщение отдельно
Старый 06.02.2009, 16:59
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Ну так еще 2/3 есть

Добавлено через 7 минут
Код AS3:
import flash.net.LocalConnection;
function fill ():void {
	trace ("fill");
	trace ("1: " + System.totalMemory);
	var sprite:Sprite;
	for (var i:int = 0; i < 20000; i++) {
		sprite = new Sprite();
		sprite.graphics.beginFill (0xFF0000);
		sprite.graphics.drawRect (0, 0, 500, 500);
		sprite.graphics.endFill ();
		addChild (sprite);
	}
	trace ("2: " + System.totalMemory);
}
function clear ():void {
	trace ("clear");
	trace ("1: " + System.totalMemory);
	var i:int = numChildren;
	var sprite:Sprite;
	while (i--) {
		sprite = getChildAt(i) as Sprite;
		sprite.graphics.clear ();
		removeChild (sprite);
		sprite = null;
	}
	trace ("2: " + System.totalMemory);
	try {
		//(new LocalConnection).connect ('gc');
		//(new LocalConnection).connect ('gc');
	} catch (e:*) {
	}
	//trace ("3: " + System.totalMemory);
}
stage.addEventListener (MouseEvent.MOUSE_DOWN, onDown);
var flag:Boolean = false;
function onDown (event:MouseEvent) {
	if (flag) {
		clear ();
	} else {
		fill ();
	}
	flag = !flag;
	trace ();
}
Результат двух пар кликов
Цитата:
fill
1: 2179072
2: 62316544

clear
1: 67145728
2: 20455424

fill
1: 20447232
2: 62472192

clear
1: 67301376
2: 21082112
Память очищается, но не до начального уровня.
Раскомментарем три строки, где происходит насильный вызов GC
Цитата:
fill
1: 2183168
2: 62271488

clear
1: 67100672
2: 20459520
3: 3080192

fill
1: 3072000
2: 62345216

clear
1: 67174400
2: 21745664
3: 3092480
После вызова GC память отчищается фактически до того состояния как и было.
__________________
(и)Нильс.ru | Плагины для FlashDevelop