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

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
По умолчанию Чистим память от Graphics

Давно интересовал вопрос чистки памяти. Вот решил до конца разобраться раз и навсегда, надеюсь на Ваше содействие в этом вопросе.

С BitmapData все понятно, память прекрасно освобождается, проблем не возникает.
Но обычно библиотечные символы, даже если включают в себя Bitmap, все равно - это Shape.
Вот тут непонятно, каким образом заставить gc очистить память.
Провел небольшой тест.
Сначала создаю много объектов:
Код AS3:
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);
}
После этого, памяти - 80 Мб.
Затем удаляю:
Код AS3:
var i:int = numChildren;
var sprite:Sprite;
while (i--)
{
	sprite = getChildAt(i) as Sprite;
	sprite.graphics.clear();
	removeChild(sprite);
}
После удаления, памяти - 65 Мб.

Вот, интересно, почему очищается только небольшая часть памяти и каким образом очистить остальную?
__________________
Griver


Последний раз редактировалось mre; 06.02.2009 в 16:01.