actionscript-3 - 垃圾收集 - 手动删除所有内容!

标签 actionscript-3 memory-management garbage-collection

我制作游戏已经有一段时间了(即将完成) - 但游戏需要重播按钮,这是一项艰巨的任务。

我知道 GC 在 Flash 中很糟糕,但我想知道是否有一种方法可以删除所有内容,就像 Flash 应用程序刚刚开始一样。清除内存、游戏数据 - 我不必担心游戏加载,因为它的数据量并不大。

所有东西几乎都存在于 DataModel 中 - 但我担心如果我只是清除所有变量,我就会有一些孤立的内存。

任何转发想法都很棒。

干杯,伙计们。

最佳答案

我会这样做:

  1. 创建一个封装整个游戏的类,称为 GameContainer 或其他名称。
  2. 搜索所有源代码,并确保每次调用 addEventListener ,您正在通过true对于“使用弱引用”论点。
  3. 在您的文档类(或框架脚本)中,创建 GameContainer 的单个实例并将其添加到舞台中,不执行任何其他操作。

现在,当您想要从内存中完全清除游戏时,请从舞台中删除 GameContainer 并将引用清空。内存不会立即释放,但游戏中的所有内容现在都可以释放。如果 Flash 认为它需要更多内存,它将触发 GC,并且大型孤立的 GameContainer 将被销毁。 (上面的步骤 2 将使您的事件监听器不被计为对对象的引用,并确保所有独立对象都符合处置条件。

不知道你说的Flash GC 可怕是什么意思。我不记得听说过其中有任何错误。除非您小心对待引用,否则它不会破坏您的对象,但所有垃圾收集都是如此。

关于actionscript-3 - 垃圾收集 - 手动删除所有内容!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606143/

相关文章:

java - Int 大小 字节 套接字 AS3

c++ - 扫描位数组以获取多个位的模式

c++ - std::allocator::max_size() 背后的基本原理是什么?

java - gc 堆分配和我的 java 程序之间的比率

flash - AS3 : How to find the parent of a deep-nested Sprite from the Stage?

actionscript-3 - 在变量声明或构造函数中实例化类

c# - 为什么 FxCop 将 GC.KeepAlive() 标记为违规?

macos - Xcode 应用程序,带或不带垃圾收集,

actionscript-3 - 如何在 ActionScript3 中创建警报对话框?

iOS加载调整大小的图像而不会降低质量