gpt4 book ai didi

flash - AS3 中对象的内存使用和垃圾回收

转载 作者:行者123 更新时间:2023-12-04 19:19:07 27 4
gpt4 key购买 nike

我想了解Object当涉及到 Flash 中的垃圾收集时,请特别输入。

我知道在这样的情况下,项目将准备好进行垃圾收集:

// create
var ar:Array = [];

var mc:MovieClip = new MovieClip();
mc.addEventLisntener(blah, blah);

ar.push(mc);
addChild(mc);

// kill & gc
ar.splice(0, 1);
mc.removeEventListener(blah, blah);
removeChild(mc);

但是如何/将 Object在以下情况下收集垃圾。

假设我的类(class)中有一个函数 MartysMC我解析了一个 Object通过:
package
{
import flash.display.MovieClip;

public class MartysMC extends MovieClip
{
/**
* Updates this
* @param obj An object containing key/value pairs to represent new property values
*/
public function update(obj:Object):void
{
var i:String;
for(i in obj)
{
this[i] = obj[i];
}
}
}
}

现在我像这样使用这个函数:
var mmc:MartysMC = new MartysMC();

var dataObject:Object =
{
x: 10,
y: 34,
alpha: 0.6
};

mmc.update(dataObject);
dataObject会发生什么| ?这会从这里收集垃圾吗?即便如此,这一行中的对象呢:
mmc.update({x:15,y:18,name:"marty"});

最佳答案

要查看 GC 会发生什么,您可以使用 Dictionary将弱引用设置为 true 并使用要检查的对象作为键:

var d:Dictionary = new Dictionary(true)
d[myObject] = whatever

当对象不再可用时,它将从字典中删除。

这里有一个基于您在 Wonderfl 示例的完整示例:
http://wonderfl.net/c/e9W4

你会看到你的两个对象很快都被垃圾收集了。

关于flash - AS3 中对象的内存使用和垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6197639/

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