flex程序中的内存管理

时间:2011-11-24 09:41:56

标签: flash actionscript-3 flex

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

1 个答案:

答案 0 :(得分:4)

内存最有问题的用途之一是当你不再需要它时不删除事件监听器。

例如

button.addEventListener(MouseEvent.CLICK, doSomething);

完成该按钮后,删除事件监听器,以便“doSomething”的所有者可以进行垃圾回收。当您向按钮添加事件侦听器时,“doSomething”的引用计数的所有者为+ 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/