一、开发中导致内存泄露的常见情况
通过上面的讨论我们可以知道,只要对象被其他活动对象(仍在运行的)所引用,那么这个对象就不会被垃圾回收,从而可能造成内存泄露。
在我们的开发中,如下的一些情形会导致内存泄露:
(一)
被全局对象所引用的对象在它们不再使用时,开发者忘记从全局对象上清除对它们的引用就会产生内存泄露。常见的全局对象有stage,主Application,类的静态成员以及采用singleton模式创建的实例等。如果使用第三方框架,比如:PureMvc,Cairongorm等,要注意这些框架的实现原理,尤其要注意框架里面采用singleton模式创建的controler和Model。
(二
) 无限次触发的Timer会导致内存泄漏。无论无限次触发的 Timer 是否为全局对象,无限次触发的Timer本身以及注册在Timer中的监听器对象都不会被垃圾回收。
二、通过以下三种方式使用addEventListener方法不会造成内存泄露:
1.
用弱引用方式注册监听器。就是调用时将addEventListener的第五个参数置为true,例如:someObject.addEventListener(MouseClick.CLICK, otherObject.handlerFunction, false, 0, true);
2.
自引用的方式。即:为对象添加的监听处理函数是对象本身的方法。例如:
this.addEventListener(MouseClick.CLICK, this. handlerFunction);
3子对象引用。即:为子对象添加的监听处理函数是父上对象的方法。例如:
private var childObject:UIComponent = new UIComponent; addChild(childObject); childObject.addEventListener(MouseEvent.CLICK, this.clickHandler);
分享到:
相关推荐
Flex内存泄露总结主要聚焦在Flash Player的垃圾回收机制和内存管理问题上,这对于优化Flex应用程序的性能至关重要。首先,我们要理解垃圾回收的基本原理。在Flash Player中,内存的释放工作由垃圾回收器负责,它是一...
在Flex开发中,理解并掌握垃圾回收的工作原理对于优化应用程序性能和避免内存泄漏至关重要。 1. **垃圾回收的基本原理** 垃圾回收(Garbage Collection,简称GC)是一种自动的内存管理技术,其目的是识别并释放...
总之,理解 FlashPlayer 的垃圾回收机制和 Flex 中对象引用的管理是防止内存泄露的关键。通过谨慎处理对象引用、正确管理事件监听器和利用调试工具,可以有效地减少 Flex 应用中的内存泄露问题,从而提高应用的性能...
总结来说,Flex应用中的内存泄露问题是由垃圾收集器无法识别的活动对象引用造成的。理解Flash Player虚拟机的垃圾回收机制及常见的内存泄露场景有助于开发者采取有效措施预防和解决此类问题。通过遵循最佳实践和利用...
在Flex开发中,内存泄漏是一个严重的问题,它会导致应用程序占用过多的系统资源,影响性能,甚至可能导致程序...通过遵循上述建议,开发者可以有效地管理和减少Flex应用程序中的内存泄漏,从而提高应用的稳定性和性能。
总结来说,避免Flex中的内存泄露需要开发者细心地管理和释放事件监听器、子对象引用、静态变量、CSS样式、UI组件、图片资源以及其他加载的媒体和网络资源。遵循这些最佳实践,可以显著提高Flex应用的性能和稳定性。
通过理解并遵循这些最佳实践,开发者可以有效地管理和减少Flex应用程序中的内存泄漏,从而提高应用的稳定性和性能。记住,理解和调试内存泄漏问题需要耐心和细心,但它对于优化Flex应用的长期健康至关重要。
垃圾收集器采用计数法或标记法来查找需要清除的对象。计数法由于无法检测循环引用的对象,现在已经很少采用了。...例如在向操作系统申请新内存空间的时候,发生异常的时候等等,因此内存并不是实时回收的。
Flex虚拟机采用了一种自动垃圾回收(Garbage Collection, GC)的内存管理系统,它负责监控和释放不再使用的内存空间。垃圾回收的主要目标是确保不再被程序引用的对象能够被有效地释放,以便为新对象腾出内存。 在...
- 利用FLEX提供的性能分析工具(如Flex Performance Profiler)可以帮助开发者找出潜在的内存泄漏问题。通过这些工具,开发者可以了解哪些资源未被正确释放,以及如何改进代码以提高内存管理效率。 #### 五、总结 ...
Flex作为一种用于构建RIA(Rich Internet Applications)的应用框架,其背后的编程语言ActionScript(简称AS)支持垃圾回收(Garbage Collection, GC)。这使得开发者无需手动管理内存,从而减少了一些常见的内存...
ActionScript的垃圾收集机制类似于Java,自动处理内存的分配和回收,但仍然存在内存泄露的可能性。 在Flash Player的AVM中,垃圾收集器主要使用标记法来识别不再使用的对象。它从根节点(通常是Application对象)...
FLEX内存释放优化原则,内存泄露解决方法,内存泄露情况
在Flex编程中,性能优化和垃圾回收是两个关键的议题,尤其对于ActionScript 3.0的项目来说,它们直接关系到应用的运行效率和内存管理。以下是对这两个主题的详细探讨。 首先,垃圾回收机制是为了自动清理不再使用的...
一个跟踪过程,它传递性地跟踪指向当前使用的对象的所有指针,以便找到可以引用的所有对象,然后重新使用在此跟踪过程中未找到的任何堆内存...公共语言运行库垃圾回收器还压缩使用中的内存,以缩小堆所需要的工作空间。
总的来说,理解和掌握Flex的垃圾收集机制对于编写高效、无内存泄漏的Flex应用至关重要。开发者需要关注对象的生命周期、合理管理引用,以及利用各种工具进行性能调优,从而实现应用的最优性能。
Adobe官方的Flex垃圾回收机制说明,理解了这个文档,将真正理解ActionScript的垃圾回收机制,编写高性能的Flex程序