Flash flex程序中的内存管理
我是一名flex程序员,但在我的项目中,我没有处理和管理内存的工作。我认为缺乏内存管理是swf文件加载滞后的原因。有谁能帮助我处理flex/as3代码中的内存管理问题吗。内存使用中最有问题的一个问题是,当您不再需要事件侦听器时,不要删除它们 比如说Flash flex程序中的内存管理,flash,actionscript-3,apache-flex,Flash,Actionscript 3,Apache Flex,我是一名flex程序员,但在我的项目中,我没有处理和管理内存的工作。我认为缺乏内存管理是swf文件加载滞后的原因。有谁能帮助我处理flex/as3代码中的内存管理问题吗。内存使用中最有问题的一个问题是,当您不再需要事件侦听器时,不要删除它们 比如说 button.addEventListener(MouseEvent.CLICK, doSomething); 使用完该按钮后,删除事件侦听器,以便可以对“doSomething”的所有者进行垃圾收集。当您向按钮添加事件侦听器时,“doSometh
button.addEventListener(MouseEvent.CLICK, doSomething);
使用完该按钮后,删除事件侦听器,以便可以对“doSomething”的所有者进行垃圾收集。当您向按钮添加事件侦听器时,“doSomething”引用计数的所有者为+1'ed。每次删除事件侦听器时,您都会-1该引用计数。要进行垃圾收集,引用计数必须为零
通过使用弱引用事件侦听器,可以让flash player为您执行此操作(在大多数情况下),如下所示:
button.addEventListener(MouseEvent.CLICK, doSomething, false, 0, true);
以下是一些帮助您管理内存的更多提示:
如果您想详细了解垃圾收集器,这里有一个很棒的资源:内存使用中最有问题的一个就是在您不再需要事件侦听器时不再删除它们 比如说
button.addEventListener(MouseEvent.CLICK, doSomething);
使用完该按钮后,删除事件侦听器,以便可以对“doSomething”的所有者进行垃圾收集。当您向按钮添加事件侦听器时,“doSomething”引用计数的所有者为+1'ed。每次删除事件侦听器时,您都会-1该引用计数。要进行垃圾收集,引用计数必须为零
通过使用弱引用事件侦听器,可以让flash player为您执行此操作(在大多数情况下),如下所示:
button.addEventListener(MouseEvent.CLICK, doSomething, false, 0, true);
以下是一些帮助您管理内存的更多提示:
如果你想详细了解垃圾收集器,这里有一个奇妙的资源:
如果我的答案适合你的需要,请考虑接受它作为正确的答案。这是部分正确的,因为GC使用其他机制(例如循环引用的检测)来标记不再需要的实例。有效点,但一般来说,这是最常见的用例。Loremplpsum,你对flash编程中使用的GC有什么想法吗?答案实际上是反向的。删除事件侦听器时,允许对拥有“doSomething”的对象进行垃圾收集,而不是对按钮进行垃圾收集。检查我的答案是否适合你的需要,请考虑接受它作为正确的答案。这是部分正确的,因为GC使用其他机制(例如循环引用的检测)来标记不再需要的实例。有效点,但一般来说,这是最常见的用例。Loremplpsum,你知道flash编程中使用的GC吗?答案其实是倒数第二。删除事件侦听器时,允许对拥有“doSomething”的对象进行垃圾收集,而不是对按钮进行垃圾收集。退房