1.监听事件时用弱引用方式(特别是对Applicatiion.applicaion和Stage的事件监听),方式如下:第五个参数值为true
Application.application.addEventListener(MouseEvent.CLICK,doClick,false,0,true);
2.集合类如Array和Dictionary里的元素,在不用的时候要设置为null;(尤其是主页面上的集合类),如:myMap[o]=null;
3.方法中创建的变量引用必须用var修饰,否则将被认为是全局变量,永远不会释放内存。
4.所有的css类都定义到css.css文件里,不要在模块里定义css,不然会导致gc不干净
5.moduelLoader的内存泄露问题:
经过初步测试,在debug版的flashplayer里,ModuleLoader的unload方法有严重的内存泄露问题(用moduleLoader不断地加载不同的url);但是在release版中表现正常;
如果需要在debug版的方法里规避此问题可用以下方法加载url,不要用unloader方法:/**
*为了解决moduleLoader的内存泄露问题
* @param oldMLoader 需要改变url的moduleLoader
* @param url 指定的url
*
*/
static public function fixLoadForModuleLoader(oldMLoader:ModuleLoader,url:String):void{
var tparent:Container=oldMLoader.parent;
var index=oldMLoader.parent.getChildIndex(oldMLoader);
var newMLoader:ModuleLoader=new ModuleLoader();
newMLoader.url=url;
tparent.removeChildAt(index);
tparent.addChildAt(newMLoader,index);
newMLoader.name=oldMLoader.name;
newMLoader.percentWidth=oldMLoader.percentWidth;
newMLoader.percentHeight=oldMLoader.percentHeight;
oldMLoader=newMLoader;
if(oldMLoader.parent is ViewStack){
(oldMLoader.parent as ViewStack).selectedIndex=index;
}else if(oldMLoader.parent is TabNavigator){
(oldMLoader.parent as TabNavigator).selectedIndex=index;
}
}
http://bbs.actionscript3.cn/redirect.php?tid=20622&goto=newpost
分享到:
相关推荐
3. 内存管理:注意释放不再使用的资源,防止内存泄漏。 六、错误处理与安全 1. 错误处理:监听`ScalableStageWebView`的错误事件,对加载失败等情况做出适当的响应。 2. 安全性:遵循网络应用的安全规范,避免加载...
在Flex开发中,可能有以下几个原因导致这一问题: 1. **大型项目**:如果你正在处理一个包含大量组件、图片或其他资源的复杂项目,这可能会消耗大量的内存,尤其是在设计模式下。 2. **循环引用**:在ActionScript...
虽然Flex提供了自动的垃圾回收机制,但在实际开发过程中,仍需注意以下几点以避免内存泄漏: **1. 释放事件监听器** 事件监听器如果未正确释放,可能会导致内存泄漏。当一个对象不再需要时,应确保解除所有与其关联...
下面将详细介绍几个重要的内存优化策略。 1. **对象释放规则**:在Flex中,对象释放遵循以下原则: - 如果一个对象不再被引用,则系统会自动回收该对象。 - 如果存在循环引用的情况,则需要手动解除这些引用。 -...
根据描述中的内容,以下是几个避免内存泄漏的关键原则: 1. **确保删除对象的所有引用**:要使一个对象能被垃圾回收器识别为垃圾并回收,必须确保其所有外部引用都被删除。 2. **处理父子对象间的引用**:如果父...
在Flex中创建行走动画,主要涉及以下几个核心知识点: 1. **切图**:行走动画通常由一系列连续的静态图像(帧)组成,这些图像被称为帧序列或帧动画。在游戏开发中,为了减少内存占用和提高加载速度,通常会将这些...
在Flex播放器的实现中,主要涉及以下几个关键技术点: 1. ActionScript编程:ActionScript是Flex的核心编程语言,类似于JavaScript,用于处理播放器的逻辑控制。例如,播放、暂停、停止、快进、快退等操作都需要...
Flex性能测试,主要涉及到的是对基于Flex开发的富互联网应用程序(RIA)的性能优化和内存管理。Flex作为Adobe AIR和Flash平台的一部分,提供了一种强大的方式来构建动态、交互式的Web应用。在“flex_Profile”文档中,...
使用C语言编写FlexCAN程序,开发者需要注意以下几点: 1. **内存管理**:合理分配和释放内存,避免内存泄漏。 2. **指针操作**:熟练使用指针传递数据,提高程序效率。 3. **结构体**:使用结构体封装FlexCAN的相关...
在Flex4中,组件生命周期分为以下几个关键阶段: 1. 创建前(CreationComplete):在这个阶段,组件的所有子组件都已创建完成,但可能尚未测量和布置。开发者可以在此阶段进行初始化设置,确保所有子组件都已就绪。...
本文将深入探讨Flex面试中的几个关键知识点。 1. AS2与AS3的区别: AS2(ActionScript 2.0)和AS3(ActionScript 3.0)的主要区别在于性能和编程模型。AS3使用AVM2虚拟机,性能显著提升,支持异常处理和强类型系统...
创建Flex模块涉及到几个关键步骤: 1. **定义模块**:首先需要定义一个模块,通常这涉及创建一个新的Flex项目,并指定其为主模块或普通模块。 2. **实现`IFlexModuleFactory`接口**:每个模块都必须包含一个实现了`...
在Flex开发中,ActionScript(AS)是主要的编程语言,而AS2和AS3是两个重要的版本。AS2与AS3的主要区别在于它们的基础架构和特性。AS2基于ActionScript Virtual Machine 1 (AVM1),而AS3则基于AVM2,后者提供了显著...
在Flex开发中,图标(Icon)的使用是十分常见的,特别是在构建用户界面时,图标能够增强视觉效果并提供直观的用户交互。`IconUtility`是一个非常实用的工具类,它允许开发者动态地加载和处理图标资源,提高了代码的...
在多线程编程中,有以下几个重要的知识点: 1. **线程安全**:当多个线程同时访问共享资源时,必须确保数据的一致性和完整性。在Flex中,这通常涉及同步机制,如锁(Mutex)或信号量(Semaphore)。 2. **通信与...
对于 Flex 组件而言,生命周期主要包括以下几个阶段: 1. **构造阶段** (birth): 组件被创建。 2. **初始化阶段** (birth): 组件完成基本配置。 3. **生效机制阶段** (growth/maturity): 组件准备就绪并响应事件。 ...
标题中的“Flash Builder 内存不足 无法加载设计模式”是指在使用Adobe Flash Builder这款集成开发环境(IDE)时,由于系统内存资源不足,导致软件无法正常启动或运行设计视图。这通常发生在处理大型项目或者同时...
在AS3中操作ZIP文件通常涉及以下几个核心概念: 1. ** ZIP文件格式:** ZIP是一种广泛使用的文件归档格式,它可以将多个文件和目录压缩到单个文件中。ZIP文件内部包含了一个文件表,记录了每个压缩文件的位置和元...