AS3:垃圾收集太大了?

时间:2011-09-16 09:10:32

标签: actionscript-3 garbage-collection

我正在制作一个明显的内存泄漏的Flash游戏。我做了我应该用GC做的事情;删除对该对象的所有引用,使其无效,删除所有侦听器(或使用弱侦听器);但泄漏仍然存在。

我偶然发现了这篇文章: http://www.andymoore.ca/2010/03/motherfucking-as3-garbage-collection/

它声称太大的对象永远不会被垃圾收集。这个理论很适合我的项目,因为我的所有游戏都存在于经常被创建和销毁的几个巨大的MovieClip中。

声称太大的物体永远不会被垃圾收集是否有任何优点?

2 个答案:

答案 0 :(得分:3)

我参与了多个中型到大型项目,你描述的漏洞似乎是递归处理的问题。您需要从最嵌套的项目中真正反省您的对象,并从该点开始处置(停止,取消,配置bitmapdata并删除侦听器)。

我建议你看看那些: 一个好的探查器: https://code.google.com/p/flashpreloadprofiler/

鸟笼套件上的Quasimondo开发人员遇到大位图问题并显示模拟内存分配的应用程序: http://www.quasimondo.com/archives/000691.php http://www.quasimondo.com/examples/memoryhog.html

另外,对于有关GC问题的更多资源,我建议您使用Adobe Jira和Bugbase系统: https://bugs.adobe.com/

我认为这个说法没有任何价值。另请阅读Andy Moore评论:

  

因此快速传递on-death = null代码,我的记忆减半了   脚印。通过评论,我能够再将其降低80%   我所有的“.cacheAsBitmap = true”语句。

答案 1 :(得分:2)

您可以尝试使用SWFWire Debugger查看未收集哪些对象。

免责声明:这是我自己的项目