我非常感谢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()两次,但是没有用。实际上,我对“ is GCRoot”问题(由fb配置文件暗示)更感兴趣,如果您告诉我它可能会有所帮助。

最佳答案

我认为Context可能会从listenthis,以便它可以对任何添加的子代执行依赖项注入或为其创建中介器。希望在您与mediatorMap或viewMap对话之前,不会附加侦听器,但我认为RL作者很可能不会考虑您希望在一段时间内在View上使用Context的用例。比View的实际寿命短。

09-08 11:13