actionscript-3 - 为什么Context会成为GCRoot?

标签 actionscript-3 garbage-collection robotlegs

我非常欣赏Robotlegs,但是最近我遇到了一个GC问题。我无法通过仅将引用设置为 null 来处理上下文对象。在 FB 配置文件工具的帮助下,我发现上下文对象似乎是“GC Root”。 为了弄清楚这一点,我编写了一个简单的类,它创建一个上下文 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配置文件暗示),如果你告诉我它可能会有更多帮助。

最佳答案

我认为上下文可能会 listenthis ,以便它可以对任何添加的子项执行依赖项注入(inject)或为它们创建中介。人们希望在与 mediatorMap 或 viewMap 对话之前不会附加监听器,但我认为 RL 作者很可能不会考虑这样的用例:您希望 View 上有一个上下文一段时间比 View 的实际生命周期短。

关于actionscript-3 - 为什么Context会成为GCRoot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972535/

相关文章:

iphone - 将对象设置为 nil 是否将其标记为垃圾回收

apache-flex - Robotlegs VS 欧芹

ios - iPhone在闪存中的不同屏幕尺寸? (获取黑条)

apache-flex - PlotChart/LineChart 线系列上的垂直线性渐变

performance - 垃圾收集的主要性能提升是什么?

c# - 循环引用对象的垃圾回收

apache-flex - 如何在 Flex/AS3 中使用基于 cookie 的 session 来测试服务

robotlegs - AS3 机器人腿和信号 - 使用信号,相当冗长,有其他选择吗?

actionscript-3 - 如何在 Flash Professional 中为 Flash Stage 实例提供唯一属性以传递给 AS3 脚本?

actionscript-3 - as3 文本字段占位符