在家上网赚钱更容易
Flash Player的内存管理
Flash Player分配给Flash/Flex应用程序的多数内存是相对小块的,由于太多的小而频繁的内存分配活动会比较耗时,Flash Player会从操作系统获取大块内存,大块内存会被分割成由固定大小的小块内存组成的内存池。下图展示了组成内存池的两种情况:左边的是Flash Player从内存获取一大块内存,然后分割成由256 bytes组成的内存池;右边的情况是一大块内存分割成由512 bytes组成的内存池
当一个内存池被占满后,Flash Player会向操作系统获取一块新内存。
Flash Player 虚拟机中的垃圾回收
Flash Player虚拟机中包含一个标准的标记清除垃圾回收器,该回收器会分段地增量扫描来清除闲置对象,如果一个对象没有活动的引用指向它,则这个对象是可以被垃圾回收的。针对这种回收机制,这里有几个小技巧:
1、创建事件监听时启用弱引用,例如
addEventListener(“click”,buttonHandler,false,0,true) |
最后一个参数为true时表示启用了弱引用。
2、使用弱字典项,例如
参数为true表示创建了一个启用了弱引用的字典对象。
3、 如果EventListener没有启用弱引用,不用时要显式地移除该EventListener。例如Flex3中使用 removeEventListener()方法移除;在 Spark 框架中(Flex 4)中,使用partAdded()添加EventListener,使用partRemoved()移除。
垃圾回收的时机
垃圾回收并不是一直在运行的,“收垃圾的人只在周五清晨来”。当某块内存被释放后,它并不一定会被在下次内存分配中使用,而仅由垃圾回收器标记它为未使用。已经使用的内存仍保持不变,这就像从电脑中把文件放到回收站中并没有改变硬盘空间,除非是从回收站再把文件清除。
只有当一个内存池快被占满的时候,向操作系统申请新的内存块之前会尝试执行垃圾回收。
强类型是你的朋友
优先使用Vector而不是Array(如果类型是单一的int 类型的话)。Vector是Flash Player10中新增的类型,性能得到改进,允许你在数据结构中使用强类型标记它的内容。
在你的代码中使用强类型,例如
var n:Number或var b:Boolean或var foo:Button |
这样会改进性能并减少内存开销。另外优先使用int而不是Number。
当可能的时候,消除子表达式。通常出现在for 循环中,例如
var temp:Array=[1,2,3];for(var i:int=0;i<temp.length;i++){
//blah
}
|
应改为:
var count:int=temp.length;for(var i:int=0;i<count;i++){
//blah
}
|
Flash Player 如何优化渲染显示
接触过Flash的人都知道,Flash有一个帧的概念,简单地说Flash是一帧一帧地在运行,每一帧的画面都不一样这样来实现动画效果。Flash Player在每一个帧周期执行指令操作是建立在可变跑道(Elastic Racetrack)上的。如下图所示:
在Flash Player执行一帧的周期里,前一部分时间用于执行代码,剩余时间用于渲染显示列表中的对象。每个执行阶段都可以根据实际需求增加执行时间来执行更多代码或做更多的渲染工作,而跑道的总长度也将相应增长。
开发Flex应用时,需要使用失效/验证模式利用可变跑道来高效的完成工作。这种模式主要包括三组方法:更新组件属性、更新尺寸信息、更新渲染和位置。如下图:
这是一个很大的话题,在这里就不进行展开了,感兴趣的话可以上网查阅相关资料或者找我一起讨论。
合理使用一些方法
有些操作性能开销很大,需要精明的使用它们。
describeType()是一个高性能开销的方法,setStyle()也是一个。别在组件构建的早期使用setStyle(),否则你可能不得不重做这部分工作。
可以在在CreationComplete 之后使用setStyle()。使用选择器(类的或者类型的)来应用样式,而不是在大量的对象上一个一个的setStyle()
如何优化你的布局
1、避免多层嵌套组件容器,尽可能的使用绝对坐标布局。例如
<mx:VBox><mx:HBox>
<mx:Button/>
<mx:CheckBox/>
</mx:HBox>
<mx:HBox>
<mx:Button/>
<mx:CheckBox/>
</mx:HBox>
</mx:VBox>
|
可以的话最好改为
<mx:Canvas><mx:Button x=”0″ y=”0″/>
<mx:CheckBox x=”50″ y=”0″/>
<mx:Button x=”0″ y=”30″/>
<mx:CheckBox x=”50″ y=”30″/>
</mx:Canvas>
|
2、Flex 4中推荐使用Group组件作为基本容器。
Group(VGroup,HGroup,TileGroup)组件是轻量级的容器(相对于VBox,HBox, Grids);默认没有滚动功能(使用Scroller 类);默认没有Clipping;为MXML 图片进一步优化:
(1)图形会共享显示对象,当可能的时候,它们会画在他们的父或兄弟显示对象中
(2)在一个图形元素上设置alpha,blendMode,filter 或者Z-older 则使它不能共享显示对象。
在家上网赚钱更容易
分享到:
相关推荐
内存监测及优化技巧可以帮助开发者更好地控制内存使用,避免内存泄漏和性能瓶颈。 首先,了解Flash Player如何分配内存是内存管理的基础。Flash Player通过虚拟机向操作系统申请内存,并以4096字节为单位的内存块在...
资源名称:Flash,Flex和AIR应用开发内存监测及优化技巧资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
FLEX内存释放优化原则,内存泄露解决方法,内存泄露情况
本文将针对“FLEX内存释放优化原则”进行深入探讨,帮助开发者掌握有效的内存管理技巧。 #### 二、核心优化原则 1. **删除对象前需通知系统** - 在删除对象之前,必须明确地告知系统即将进行的操作。这一步骤对于...
### Flex内存优化技巧详解 在开发Flex应用时,合理的内存管理是提高应用性能的...开发者需要时刻关注内存使用情况,并采取适当的措施来优化内存管理策略。通过遵循上述建议,可以显著提高Flex应用程序的性能和稳定性。
### Flex内存管理及相关内容 #### 一、Flex与ActionScript中的内存管理机制 Flex作为一种用于构建RIA(Rich Internet Applications)的应用框架,其背后的编程语言ActionScript(简称AS)支持垃圾回收(Garbage ...
Flex 应用内存泄露的分析与诊断主要集中在 Flex 应用程序中由于内存管理不当导致的问题。Flex 使用 ActionScript 语言编写,其运行环境在 FlashPlayer 的 ActionScript Virtual Machine (AVM) 中,该虚拟机包含一个...
Flex应用通常涉及大量的交互和动态数据处理,因此性能优化和内存管理是开发过程中的关键环节。以下是对Flex性能优化和内存查看的深入探讨: 1. **Flex性能优化**: - **代码优化**:减少不必要的计算,避免在循环...
在FLEX开发中,内存优化是提高应用程序性能和稳定性的重要环节。以下是一些关于FLEX内存释放和优化的关键知识点: 1. **引用管理**:确保当对象不再使用时,所有外部引用都被删除。如果一个对象被其他对象引用,...
### Flex应用内存泄露的分析与...理解Flash Player虚拟机的垃圾回收机制及常见的内存泄露场景有助于开发者采取有效措施预防和解决此类问题。通过遵循最佳实践和利用适当的工具,可以显著降低Flex应用中内存泄露的风险。
根据提供的标题、描述、标签及部分内容,我们可以总结出与Flex优化相关的多个知识点。这些知识点主要集中在提高Flex应用程序的性能上,涉及代码优化、资源管理、数据处理等方面。 ### Flex优化全集 #### 1. 数组...
Flex内存泄露总结主要聚焦在Flash Player的垃圾回收机制和内存管理问题上,这对于优化Flex应用程序的性能至关重要。首先,我们要理解垃圾回收的基本原理。在Flash Player中,内存的释放工作由垃圾回收器负责,它是一...
Flex编译优化方法是提升开发效率的关键,尤其是在大型Flex项目中,编译时间长和Eclipse性能问题可能严重影响开发流程。以下是一些针对Flex编译慢的优化策略: 1. **关闭不必要的项目**:在Eclipse中,确保只开启...
14. **Flex性能分析**:使用Flex提供的性能分析工具(如FlexProfiler)来检测内存泄漏,找出潜在的问题点,并针对性地优化代码。 通过遵循上述建议,开发者可以有效地管理和减少Flex应用程序中的内存泄漏,从而提高...
按照描述中的步骤操作后,这些DLL文件会与Adobe Flex的运行环境进行集成,可能通过优化内存分配或提供更高效的渲染机制,从而解决内存不足的问题,使设计模式可以正常工作。 总结来说,当遇到FLEX内存不足导致无法...
Flex应用程序性能改善技巧是开发人员在构建富互联网应用时必须关注的重要领域。Flex作为一个基于ActionScript和Flash Player的开发框架,提供了丰富的用户界面组件和强大的数据处理能力,但如果不加以优化,可能会...