私が書いたクラスがあり、それはもっと大きくなるはずです。それは何も拡張しておらず、ほとんど進んでいないか、または私は思ったが、それぞれが
100k
の100バイト(back2dosありがとう)の下でただちに取り上げている。私は、オブジェクトがAS3でどれくらいのメモリを占めるかに本当に何が影響するのかをよく理解していないと思います。AS3:オブジェクトのメモリサイズを最適化する
誰かが助けてくれるかもしれない主題についての読書を指し示すことができ、あるいはこれについて考える方法についてのいくつかの洞察を説明することができます、それはすばらしいでしょう。
私はこれまで多くのオブジェクトをメモリに残しておきたいと思いましたが、これまでのことができると思っていましたが、このサイズで作成するか、オブジェクトプーリング技術を使用する必要があります。
ありがとうございました。
編集:私は順序でこれを持っているが、私は完全を期すためにここに掲載のコードを維持しています。クラスは元のバージョンから大幅に変更されています。他のファイルを参照していた値は、他の誰かのためにコードを実行できるように静的になっています(理論的には...)。
私の状況は分類されていますが、クラスとメモリの情報については、参考にしておきます。
この場合、クラスには15の変数があります。私は、単一のStringとint、Numbers、Booleansの束だけを使用しています。また、ポイントは保存されませんが、コンストラクタのPointもインポートされます。テストでは、グローバルなXML参照やPointクラスがなくても、それはまだ〜84kです。 7つの変数のゲッターと、コンストラクターに加えて2つのメソッドがあります。すべてが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を追跡しているので、使用されているメモリがKb no bであると仮定していたと思います。うーん...私は物事が整っていると思うので、私はこの場合に私が見ていたものを誤解していた。私をまっすぐにしてくれてありがとう。私はコードが変更されていることに注意するために投稿を更新しました。 – grey