2011-11-24 37 views
0

我是一名flex程序员,但我无法处理管理我项目中的内存。我认为缺乏内存管理是加载swf文件滞后的原因。任何人都可以帮助我如何处理flex/as3代码中的内存管理。flex程序中的内存管理

回答

4

内存中最有问题的用途之一就是在您不再需要它们时不移除事件侦听器。

例如

button.addEventListener(MouseEvent.CLICK, doSomething); 

当你与该按钮操作完成后删除事件侦听器,以便“DoSomething的”的所有者可以被垃圾收集。当您向按钮添加事件侦听器时,“doSomething”的引用计数的所有者将被+1。每次你删除一个引用计数的事件监听器你-1。为了垃圾收集,引用计数必须为零。

可以让flash播放器为你做这个(在大多数情况下),通过使用弱引用的事件监听器,像这样:

button.addEventListener(MouseEvent.CLICK, doSomething, false, 0, true); 

下面是一些提示,以帮助您的内存管理:http://blog.skinkers.com/2010/10/08/memory-management-in-air-as3-flash-garbage-collection/

如果您想了解详细的垃圾收集器,这里是一个梦幻般的资源:http://jpauclair.net/2009/12/23/tamarin-part-iii-current-garbage-collector-in-flash-10-0/

+0

如果我的回答适合您的需求,请考虑接受其为正确答案。 – ThomasM

+1

这是部分正确的,因为GC使用其他机制(例如检测循环引用)来标记不再需要的实例。 – LoremIpsum

+0

有效的点,但一般来说,这是最常见的用例。 – ThomasM