我是as3的新用户。 我总是声明变量并使用它们,但我在使用它后不会将它们从内存中删除我的问题((记忆是否继续保留变量或将它们删除))
拜托,我需要你的帮助
答案 0 :(得分:1)
当你完成使用对象变量(如Sprites和Arrays)时,你可以将它们设置为null,就像这样
var arr:Array = new Array (1,2,4,7); //create an array
//do whatever you need to
arr = null; //now the array is "deleted" and flash will remove it from memory
如我所知,数字和整数等非对象变量不能被删除,但是如果删除持有它们的对象(将其设置为空),它们将被删除,因为它们是对象持有的一部分它
不能保证这是正确的,但我希望它有所帮助:)
答案 1 :(得分:0)
他们离开范围后?它将保持内存,直到垃圾收集器运行。如果您对仍在范围内的那段内存有任何其他引用,垃圾收集器将把它留在那里。但是如果每个引用完全超出范围(意味着你不能再在代码中访问那个内存),那么它只会在后台停留,不受控制,直到它最终被释放回操作系统由垃圾收集器。
这有点偏僻,但在AS3的情况下,虚拟机倾向于从操作系统中获取大量内存,然后尝试将尽可能多的程序数据放入该块中。当它在那块内存中耗尽空间时,它将从操作系统中获取更多内容并将其全部添加到第一个块中。然后它会再次尝试适应那块可能的东西。
我记得这个 - 我可能会被一两个细节关闭 - 垃圾收集器基本上会等待运行,直到虚拟机需要获得更多空间来放入所有程序的内存。然后才真正得到它更多来自操作系统,它将运行垃圾收集器,看它是否可以释放它已经拥有的一些空间。在此期间,如果它清除了任何内容,它可能会将内存返回给操作系统,或者它可能只是将当前内存块中的更多位置指定为可供使用。但是,尝试在每次获得机会时向操作系统返回随机的,单个字节的内存并不是真的很重要。
答案 2 :(得分:-2)