2010-11-17 39 views
4

我今天在互联网上的某处看到了System.gc(),我想知道它是否被推荐用在Flash CS5项目中,以及为什么。Actionscript内存管理?

+0

你应该搜索关于Flex而不是ActionScript的类似问题。我相信你会在这件事上找到现有的答案(Flash中的GC)。 – 2010-11-17 04:44:33

回答

4

在我所知道的每一个垃圾收集系统中,垃圾收集机制都被设计成在后台运行,作为程序员理论上不应该关注的抽象。有一些特殊情况下强制收集是有用的,但这些情况通常涉及中断(真正的机器中断,而不是动作事件),测试/调试场景或一些棘手的延迟管理需求。赔率是你永远不需要调用System.gc(),你可以放心地忽略它。

+1

另外,afaik,它不可能强制gc发布版本,它是全部自动化的,你所能做的就是删除所有不需要的监听器和这类东西。 – Maurycy 2010-11-17 09:25:53

0

System.gc()仅在调试器版本的Flash Player和某些AIR应用程序中可用。在普通的网站上调用它,在普通的Flash Player下不会有任何效果,并且会默默地失败。

System.gc()仅用于测试目的。

0

System.gc()仅用于测试目的。监视应用程序正在使用的内存使用情况并调用System.gc()可以很方便,以突出显示任何内存泄漏的可能性。

提示:据我记得你必须两次调用System.gc()来强制它立即收集。

该文档指出,此方法仅适用于调试播放器。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/System.html#gc()

所以,总结一下,如果你正在测试的内存,这是相当方便的,否则不要使用它。