は、私は、Flex BuilderでのFlexプロファイラの使用方法を説明する何かを偶然見つけ、それがデバッグに私には大きな助けでしたメモリリーク。私は間違いなくそれを試してみるだろう。それは非常に使いやすいです。
値オブジェクトのプロパティとしてコレクション(少なくともLARGEコレクション以上)を使用しないようにしてください。私はCairngormアプリケーションにいくつかのタイプのバリューオブジェクトクラスを用意していましたが、いずれもArrayCollection
という「子」プロパティを持ち、フィルタリングに使用されていました。プロファイリングするとき、私はこれらが私の最大の記憶嫌い者の1人であることを発見したので、代わりにint
として "parentId"を保存し、これをフィルタリングに使用するようにアプリケーションを変更しました。使用されたメモリは大幅に削減されました。このような何か:
古い方法:
public class Owner1
{
public var id:int;
public var label:String;
public var children:ArrayCollection; // Stores any number of Owner2 Objects
}
public class Owner2
{
public var id:int;
public var label:String;
public var children:ArrayCollection; // Stores any number of Owner3 Objects
}
public class Owner3
{
public var id:int;
public var label:String;
}
新しい方法:必要がなくなったとき、私はまた、イベントリスナーを削除勧めないだろう
public class Owner1
{
public var id:int;
public var label:String;
}
public class Owner2
{
public var id:int;
public var label:String;
public var parentId:int; // Refers to id of Owner1 Object
}
public class Owner3
{
public var id:int;
public var label:String;
public var parentId:int; // Refers to id of Owner2 Object
}
。
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/arguments.html#callee – Jotham