Robotlegs にはとても感謝していますが、最近 GC の問題が発生しました。参照 null を設定するだけでコンテキスト オブジェクトを破棄できませんでした。FB プロファイル ツールを使用すると、コンテキスト オブジェクトが「GC ルート」のように見えることがわかりました。それを理解するために、コンテキスト obj を作成し、到達不能のままにする単純なクラスを作成します。このクラスの詳細は次のとおりです。
public class MemoryLeak extends Sprite{
public function MemoryLeak()
{
makeAndDrop();
}
public function makeAndDrop():void{
var _context = new Context(this);
_context = null;
}
}
このクラスを実行したとき、GC によって破棄されることを望んでいましたが、うまくいきませんでした (毎回ではありません)。プロファイル ツールは、このインスタンスが GCRoot であることを示しています。GC に関する記事をいくつか読みましたが、GCRoot 自体について言及しているものはほとんどありません。誰か理由を教えてください。どうもありがとうございました。
PS: makeAndDrop() の後に System.gc() を 2 回呼び出そうとしましたが、うまくいきませんでした。実際、私は「is GCRoot」の問題 (fb プロファイルによって暗示されている) にもっと興味があります。それについて教えていただければ、もっと役立つかもしれません。