gpt4 book ai didi

actionscript-3 - AS3 : Making objects eligible for GC by reference counting

转载 作者:行者123 更新时间:2023-12-01 23:14:43 26 4
gpt4 key购买 nike

我读了这篇关于 Flash 如何进行垃圾回收的非常好的文章: http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html

但我想知道您需要做些什么才能确保您的所有对象都通过更快的引用计数方法而不是更占用 CPU 的标记和清除方法进行垃圾回收。假设我有以下函数并用它创建一个对象:

function makeIt():void {
var spriteA:Sprite = new Sprite();
var spriteB:Sprite = new Sprite();
spriteB.addEventListener(MouseEvent.CLICK, myCallback);
var spriteC:Sprite = new Sprite();
spriteA.addChild(spriteB);
spriteB.addChild(spriteC);
stage.addChild(spriteA);
}

如果我只是做了下面的事情,是不是就只能通过标记清除的方式进行 GC 了?

spriteB.removeEventListener(MouseEvent.CLICK, myCallback);
stage.removeChild(SpriteA);

parent 可以引用他们的 child , child 也可以引用他们的 parent ,所以我是否必须做所有这些才能通过引用计数使其符合 GC 条件?

spriteB.removeChild(spriteC);
spriteB.removeEventListener(MouseEvent.CLICK, myCallback);
spriteA.removeChild(spriteB);
stage.removeChild(spriteA);
spriteA = null;

我是否也必须将 spriteB 和 spriteC 设置为空?如果 spriteC 是扩展 Sprite 的类的一个实例,并且有几个自己的属性,那会怎样呢?我是否也必须取消这些?

最佳答案

是的,您必须移除 Child、removeEventListener 并设置本地引用(或类级别引用)以使引用计数为零。

关于actionscript-3 - AS3 : Making objects eligible for GC by reference counting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com