Показать сообщение отдельно
Старый 30.09.2009, 21:26
garkin вне форума Посмотреть профиль Отправить личное сообщение для garkin Найти все сообщения от garkin
  № 1  
Ответить с цитированием
garkin

Регистрация: Feb 2009
Сообщений: 28
По умолчанию actionscript=memleak?

Проясните, пожалуйста, ситуацию с памятью. К примеру есть простенький код с счетчиком mr.doob Stats.:
Код AS3:
package{
	import flash.display.Sprite;
	import flash.events.Event;
	import net.hires.debug.Stats;
	public class Main extends Sprite 
	{
		public function Main():void{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		private function init(e:Event = null):void{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			var stts:Stats = new Stats();
			addChild(stts);
		}
	}
}
MEM - постоянно увеличивается, но время от времени сбрасывается вниз, видимо запуск GC, но не до начального значения, нижний порог все время растет. Соответственно, со временем, несмотря на сбросы MEM, растет и значение MAX(максимально достигнутое к этому моменту времени значение памяти).
На сайте счетчика указано, что:
Цитата:
MEM Memory your code is using, if it increases per frame is VERY wrong.
То есть, это - ненормальная ситуация, хотя код - абсолютно минималистичен? И у меня в коде где-то косяк Оо?
Значит ли это, что GC способен чистить за собой все до конца, и есть флэшки, чья жизнедеятельность не связана с постепенной утечкой памяти?

Ситуация со stats полностью аналогична девственному коду с таймером, содержащим только трейс system.totalmemory, тот же неумолимый рост. Просто более наглядна.


Последний раз редактировалось garkin; 30.09.2009 в 22:00.