一.简述Flex内存释放优化原则。什么情况会发生内存经泄露,一旦有内存泄露,你会如何解决?
FLEX内存释放优化原则:
1. 被删除对象在外部的所有引用一定要被删除干净才能被系统当成垃圾回收处理掉;
2. 父对象内部的子对象被外部其他对象引用了,会导致此子对象不会被删除,子对象不会被删除又会导致了父对象不会被删除;
3. 如果一个对象中引用了外部对象,当自己被删除或者不需要使用此引用对象时,一定要记得把此对象的引用设置为null;
4. 本对象删除不了的原因不一定是自己被引用了,也有可能是自己的孩子被外部引用了,孩子删不掉导致父亲也删不掉;
5. 除了引用需要删除外,系统组件或者全局工具、管理类如果提供了卸载方法的就一定要调用删除内部对象,否则有可能会造成内存泄露和性能损失;
6. 父对象立刻被删除了不代表子对象就会被删除或立刻被删除,可能会在后期被系统自动删除或第二次移除操作时被删除;
7. 如果父对象remove了子对象后没有清除对子对象的引用,子对象一样是不能被删除的,父对象也不能被删除;
8. 注册的事件如果没有被移除不影响自定义的强行回收机制,但有可能会影响正常的回收机制,所以最好是做到注册的事件监听器都要记得移除干净。
9. 父对象被删除了不代表其余子对象都删除了,找到一种状态的泄露代码不等于其他状态就没有泄露了,要各模块各状态逐个进行测试分析,直到测试任何状态下都能删除整个对象为止。
内存泄露情况:
1. 引用泄露:对子对象的引用,外部对本对象或子对象的引用都需要置null;
2. 系统类泄露:使用了系统类而忘记做删除操作了,如BindingUtils.bindSetter(),ChangeWatcher.watch()函数时候完毕后需要调用ChangeWatcher.unwatch()函数来清除引用 ,否则使用此函数的对象将不会被删除;
类似的还有MUSIC,VIDEO,IMAGE,TIMER,EVENT,BINDING等。
3. 效果泄露:当对组件应用效果Effect的时候,当本对象本删除时需要把本对象和子对象上的Effect动画停止掉,然后把Effect的target对象置null; 如果不停止掉动画直接把 Effect置null将不能正常移除对象。
4. SWF泄露:要完全删除一个SWF要调用它的unload()方法并且把对象置null;
5. 图片泄露:当Image对象使用完毕后要把source置null;(为测试);
6. 声音、视频泄露: 当不需要一个音乐或视频是需要停止音乐,删除对象,引用置null;
内存泄露解决方法:
1. 在组件的REMOVED_FROM_STAGE事件回掉中做垃圾处理操作(移除所有对外引用(不管是VO还是组件的都需要删除),删除监听器,调用系统类的清除方法)
先remove再置null, 确保被remove或者removeAll后的对象在外部的引用全部释放干净;
2. 利用Flex的性能优化工具Profile来对项目进程进行监控,可知道历史创建过哪些对象,目前有哪些对象没有被删除,创建的数量,占用的内存比例和用量,创建过程等信息;
二.你常用的Flex框架是什么?简述一下它的特点。
mate.
特点:Flex应用是基于事件驱动的,而Mate框架使其变得更加得简单,Mate允许用户定义是谁正在管理/处理这一事件,以及数据是否需要从服务器端返回,或者其他的什么事件需要被触发,所有的这些都使得Flex应用的开发变得更加得简单。
三.Flex是如何与flash协作的?
实现编码与设计的好处是显而易见的:
1.代码易于维护与二次开发。所有AS代码以面向对象的思想在flash外部组织,用notepad即能打开。比起传统的as2分散于frame之间,以及更早的分散于影片与按纽之上,其优点好处不言而喻。
2.设计独立于代码之外。可以在没有程序员的清况下,修改程序(系统) 的外观,亦可以新做一批theme;程序没有变,只是改改图片和排列位置,大小等,就可以迅速焕然一新。譬如,在春节时,加一些春节的时令元素进去,这将是一件很容易做的事情。
四.如何提升Flex运行效率,请从各方面进行简述。
1、避免容器的多级嵌套,减少相对尺寸、相对定位的使用。
在使用百分比来给容器内的元件定尺寸,一旦容器中的任何一个元件的位置和尺寸变化,都会引发容器对所有子级的重定位动作。如果嵌套的级别很深,这个计算量会很大。
2、尽量使用轻量级的容器
Canvas是体积最小的容器,它只支持绝对定位。很多时候,都可以使用它来代替HBOx和VBox。另外,Canvas也是我们编写自定义容器性质组件的一个首选。它具有容器的基本功能,利于扩展。
3、避免使用大体积的组件,比如DataGrid、AdvancedDataGrid
大个子组件的功能强大,但开销也是非常大的。由于功能的复杂性,使得皮肤、样式、itemRenderer的实现都格外复杂。
4、处理数据时多用分页的方式
在使用数据类型控件时,尽量减少数据一次的显示量。比如TileList,它会把数据一次性全部创建,不管是不是需要显示,这样很浪费资源。 ViewStack 、TabNavigator等在处理元件时,并不是一次创建,只要元件在第一次被显示时才创建,这样,就避免的不必要的开销。
5、setStyle和styleName
Flex 组件的皮肤都是可视化元件,组件在自身初始化时,会使用当前的样式比如styleName完成所有皮肤元件的绘制。如果我们在运行期间通过 setStyle修改了组件的样式,组件的尺寸、位置就会作相应调整。联系到第一条,如果组件位于一个层级很深的容器中,也会有一个大的计算量。
分享到:
相关推荐
【Flex面试题】Flex面试题主要涵盖Flex的基础概念、开发框架、MVC模式的应用、内存管理、垃圾回收机制、前端性能优化以及与后端通信等多个方面。以下是对这些知识点的详细解析: 1. AS2与AS3的区别: AS2...
### FLEX面试题详解 #### 1. 如何在容器中隐藏滚动条? 在Flex中,如果希望在容器内不显示滚动条,可以通过设置`horizontalScrollPolicy`和`verticalScrollPolicy`属性为`off`来实现。这两个属性分别控制水平和...
Flex面试题涉及到多个方面,包括ActionScript(AS)版本差异、Flex开发框架、MVC模式的应用、内存管理、垃圾回收机制、前后端交互、性能优化以及Flex与Flash的协同开发等核心知识点。以下是对这些内容的详细解释: ...
Flex面试题集锦,整理了很多实际公司的面试题型,涵盖范围很广,这些题型搞定了,面试基本上没问题了。
Flex面试题涵盖了许多关键知识点,包括Flex容器的滚动条控制、项目类型、RSL(Runtime Shared Libraries)的使用、SWC文件的制作、文件优化、数据类型比较、事件处理、MVC模式应用以及自定义组件的创建。下面将对...
### Flex面试题及答案解析 #### 1. 如何避免容器显示滚动条? 在Flex中,如果不想在容器中显示滚动条,可以通过设置`horizontalScrollPolicy`和`verticalScrollPolicy`属性为`off`来实现。这两个属性控制着水平和...
### Flex面试题解析 #### 1. 修改默认背景颜色 - **问题**: 使用FlexBuilder 3建立一个新的.mxml页面时,默认背景为蓝色。如何修改这一设置,使得下次创建时背景不再是默认的蓝色? - **解答**: 要修改Flex项目的...
总结来说,Flex面试题涉及ActionScript版本差异、框架选择、MVC实现、内存管理、垃圾回收、后端通信、性能优化以及开发工具的使用等多个方面,这些都是Flex开发者必备的知识点。熟悉并掌握这些内容,有助于在面试中...
在Flex面试中,考察的主要是开发者对Adobe Flex框架的理解和应用能力。以下是对题目中涉及知识点的详细解释: 一、类名修饰符的作用: 1. `public`: 公共访问修饰符,表示该类、变量或方法可以在任何地方被访问,...
【Flex面试知识点详解】 1. **程序跟踪**:在Flex Builder3中,跟踪程序的方法有多种。`trace()`函数可以在控制台输出信息,方便调试;设置断点可以在代码的特定位置暂停程序,以便检查变量状态;非调试模式下,...
从网上搜集的比较全的Flex面试题目及答案,主要涉及Flex基础知识和ActionScript3.0的语法细节,希望对大家有所帮助
Flex是一个强大的RIA(富互联网应用)...在准备Flex面试时,考生应深入理解上述知识点,并能够应用这些知识点解决实际问题。这些知识点的掌握程度,往往反映了应试者对Flex和ActionScript3.0的熟悉程度和实际编程能力。
根据提供的文件信息,我们可以归纳出一系列与Flex相关的知识点,这些知识点涵盖了Flex开发中的基础概念、事件处理、数据类型转换、数组操作等多个方面。下面将详细解释这些知识点。 ### 1. Flex 默认背景颜色的修改...
JavaEE是企业级应用开发的重要框架,它包含了...在面试中,可能会被问及这些技术的基本概念、用法、优缺点,以及在实际项目中的应用案例。理解并掌握这些知识点,对于提升JavaEE开发者的技术能力和求职竞争力至关重要。
在CSS中,只需设置display属性为flex或inline-flex,就可以将一个容器转变为flex容器,其内的子元素则变为flex项目。flex布局有两条主要的轴线:主轴(main axis)和交叉轴(cross axis)。主轴决定了项目的排列方向...
Salesforce管理面试题及答案.pdf 本文档主要讲述了 Salesforce 管理面试题及答案,涵盖了 MVC 架构在 Salesforce 中的应用、Visualforce 的实现、MVC 模型的组成部分、Visualforce 页面和组件的使用等知识点。 MVC...