FlexBuilderでFlexProfilerを使用する方法を説明する何かに出くわしましたが、メモリリークのデバッグに非常に役立ちました。私は間違いなくそれを試してみることをお勧めします。とても使いやすいです。アプリケーションのプロファイリング時に見つけたもの:
値オブジェクトのプロパティとしてコレクション(少なくともLARGEコレクション)を使用することは避けてください。ArrayCollection
Cairngormアプリケーションにはいくつかのタイプの値オブジェクトクラスがあり、それぞれに、フィルタリングに使用される「children」プロパティがありました。プロファイリング時に、これらが私の最大のメモリイーターの1つであることがわかったので、代わりに「parentId」をとして保存し、int
これをフィルタリングに使用するようにアプリケーションを変更しました。使用したメモリが大幅に削減されました。このようなもの:
古い方法:
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
}
また、イベントリスナーが不要になったら削除することをお勧めします。