Показать сообщение отдельно
Старый 28.11.2008, 03:33
mikleb вне форума Посмотреть профиль Отправить личное сообщение для mikleb Найти все сообщения от mikleb
  № 13  
Ответить с цитированием
mikleb

Регистрация: Feb 2008
Сообщений: 111
УЖАС!!!!
Код:
package
{
	import flash.display.Sprite;
	import flash.system.System;

	public class Main extends flash.display.Sprite
	{
		private var d:Array
	
		public function Main():void
		{
			var n:int = 10000000, i:int;
			
			d = new Array();
			trace(System.totalMemory);
		
			for (i = 0; i < n; ++i)
				d[i] = 0.123;
			trace(System.totalMemory);
			
			
			for (i = 0; i < n; ++i)
				d[i] = d[i] + d[i] + d[i] + d[i];
			trace(System.totalMemory);
			
		}
	}
}
После второго цикла используется в два раза больше памяти! Причем gc ее не освобождает (проверял отдельно)
Это что же получается - работаешь с массивом не добавляя в него новых элементов, а он потихоньку сжирает память непонятно куда
Знатоки as3 объясните в чем дело?

Кстати если тип всех элементов int, то все нормально.


Последний раз редактировалось mikleb; 28.11.2008 в 04:03.