У меня есть класс, который я написал, и он кажется большим, чем нужно. Он ничего не расширяет, и очень мало происходит - или так я думал - но каждый из них занимает чуть меньше
100k
100 байт (спасибо back2dos). Я предполагаю, что я не очень хорошо понимаю, что действительно влияет на то, сколько памяти занимает объект в AS3.AS3: Оптимизация размера памяти объекта
Если кто-нибудь может указать мне на некоторые чтения по этому вопросу, которые могут быть полезными, или, возможно, объяснить некоторое понимание того, как об этом думать, это было бы замечательно.
Я хотел бы сохранить ЛОТО этих объектов в памяти - и я думал, что могу до сих пор, но при таком размере мне придется создавать их или использовать какую-то технику объединения объектов.
Спасибо за помощь.
Edit:Хотя у меня есть это в порядке, я держу код, который я здесь для полноты картины. Класс был сильно изменен с исходной версии. Значения, которые ссылались на другие файлы, были сделаны статичными, чтобы позволить коду работать для кого-то другого (теоретически hehehe ...).
Хотя моя ситуация разобрана, я дам ответ на полезную ссылку для информации о классах и памяти.
В этом случае класс имеет 15 переменных. Я использую только одну String и кучу ints, Numbers и Booleans с некоторыми ссылками на более похожие данные в глобально доступных XML-данных. Он также импортирует Point для конструктора, хотя точки не сохраняются. При тестировании даже без глобальных ссылок XML или класса Point он все еще находится вокруг ~ 84k каждый. В дополнение к конструктору есть геттеры для 7 переменных и несколько методов. Все из них составляют менее 20 строк (и у меня очень редкий стиль кодирования).
Класс упоминается для справки, но не стесняйтесь обобщать:
package
{
public class AObject
{
private var _counter:int;
private var _frames:int;
private var _speed:int;
private var _currentState:String;
private var _currentFrame:int;
private var _offset:int;
private var _endFrame:int;
private var _type:int;
private var _object:int;
private var _state:int;
private var _x:Number;
private var _y:Number;
private var _w:int;
private var _h:int;
private var _update:Boolean;
public function AObject(targetX : int, targetY : int, state : int, object : int, type : int)
{
_x = targetX;
_y = targetY;
_type = type;
_object = object;
_state = state;
_counter = 0;
_w = 32;
_h = 32
_update = true;
setState(state);
}
public function setState(state:int) : void
{
_currentState = "bob";
var frameCounter : int = 0;
var stateCounter : int = state - 1;
while (state > 0)
{
frameCounter += 4;
--stateCounter;
}
_offset = frameCounter;
_currentFrame = _offset;
_speed = 10;
_frames = 4;
_endFrame = _offset + _frames - 1;
}
public function get state() : int
{
return _state;
}
public function animate() : Boolean
{
if (count())
{
if(_currentFrame < _endFrame)
{
++_currentFrame;
}
else
{
_currentFrame = _offset;
}
_speed = 10;
return true;
}
else
{
return false;
}
}
private var adder: Number = 0;
private function count():Boolean
{
_counter++;
if (_counter == _speed)
{
_counter = 0;
return true;
}
else
{
return false;
}
}
public function get x():int
{
return _x;
}
public function get y():int
{
return _y;
}
public function get type():int
{
return _type;
}
public function get object():int
{
return _object;
}
public function get currentFrame():int
{
return _currentFrame;
}
public function get w():int
{
return _w;
}
public function get h():int
{
return _h;
}
}
}
я переименовал материал для поста, это не мой точное код. Я изменил это. Я также изменил ряд переменных, которые полагаются на другие файлы, чтобы быть фиксированными значениями здесь, что объясняет много странности, которую вы видите. Когда я запускаю профилировщик Flex, я получаю около 12000, когда я запускаю его. Думаю, я предполагал, что используемая память была Kb no b, так как монитор памяти отслеживает kb. Хммм ... так что я думаю, что все в порядке, и я неправильно понял то, что я видел в этом случае. Спасибо, что выпрямил меня. Я обновил сообщение, чтобы отметить, что код был изменен. – grey