Flash CS3-如何清理内存
|
我有一个问题,如何清除/释放闪存中的内存?例如,我正在完成游戏,我想从头开始,如果我只是跳到第一帧,则该内存中仍然有所有对象,是否有可能强制清理内存?
我可以释放对象的内存吗?例如我removeChild(something)-我想为一个对象释放内存,因为我将重用它?
谁能解释一下发动机的工作原理?
谢谢
没有找到相关结果
已邀请:
3 个回复
为陡土
这样做是删除对变量myObject持有的对象的引用。而已。您需要对情况有更多的了解,以便能够说出这种分配是否甚至使有问题的对象有资格进行垃圾回收,尤其是还有多少其他变量持有对该对象的引用。即使您未将引用设置为null(即,如果myObject与GC根没有连接),该对象也可能已经可以进行垃圾回收了。 可以说,整个GC机制比StackOverflow帖子中可以令人满意地解释的更为复杂。这就是为什么它在Moock书中有一整章的原因,甚至连该书都没有涉及实现细节,也没有涉及Flash Player何时准确地对其删除计数或标记和清除遍历进行引用的细节。 谨记最重要的事情是恕我直言: 当您打算“杀死”一个对象时,请给它一个cleanUp()或destroy()函数,在其中执行诸如停止其所有计时器,声音,删除监听器之类的操作。一个对象将继续存在并执行代码,直到它会得到GC \ d。 Flash Player会尽可能延缓GC –通常是在Player需要从系统分配更多RAM时触发的,因为分配内存是唯一比做标记更耗时的事情并扫描GC通过。 了解弱听者与强听者的关系。基本上,当侦听器弱时,侦听器引用将被标记扫掠GC忽略,因此仅凭它并不能防止收集对象。但是,请勿听任何人告诉您“始终使用弱听者”或“始终使用强听者并手动将其删除”,因为有时每个听者都合适,所以这就是您的选择。
赐黄
将从舞台上删除对象,但仍将其保留在内存中。如果您想完全摆脱它,则必须像这样的对象“ѭ3”ѭ2。您可能不需要这样做。在大多数情况下,仅将其从舞台上删除并删除所有相关事件就足够了。
坛沤疲撑拆