详细说明所有ActionScript3对象的生命周期

时间:2013-03-13 03:03:45

标签: actionscript-3 flash memory air

我使用ActionScript3开发网络和移动游戏。记忆是我最大的敌人,我总是不知道某些物体的细节寿命。 例如: 位图 我知道bitmapData有一个“dispose”函数。总是,我使用“bitmap.bitmapData.dispose”处理一个位图对象。但是,我想知道位图对象的引用是否变为0,即使我没有调用dispose函数,GC也会释放此对象使用的内存。

我有太多像上面这样的问题(Sound,Texture,BaseTexture ......)。有没有人对这个话题有一些想法?

1 个答案:

答案 0 :(得分:0)

对象的生命周期由一件事决定 - 如果不再从任何地方引用它,它被认为是死的(孤立的)并且是从内存中移除的主体。所以是的,如果删除对它的所有引用,即使没有显式dispose()调用,也会从内存中删除BitmapData对象。

关于声音或纹理对象 - 最好重复使用它们,例如,您可以多次调用mySound.play(),这将生成一个单独的SoundChannel对象,其寿命大约是声音的持续时间,如果它没有被引用。同样,您可以使用相同的Texture对象来为其创建多个带纹理的实例。

有关扩展EventDispatcher的类的特殊规则,因为它们可以监听事件,如果您不使用对该对象的弱引用,则事件侦听器直接附加到实例,从而使一个额外的引用链接,它将有效地禁止GC回收该对象占用的内存。因此,您应始终完全控制所有强引用侦听器,至少为此目的。

希望这有帮助。

相关问题