- 浏览: 782814 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (573)
- Java基础 (76)
- C++基础 (5)
- hibernate (5)
- struts (4)
- spring (1)
- webservice (7)
- AjaX基础 (0)
- JS脚本 (53)
- 正则表达式 (5)
- html脚本 (30)
- 数据库基础 (54)
- 工作相关 (49)
- 其他 (30)
- Linux (9)
- web服务器 (17)
- JSP (13)
- eclipse (6)
- 面试题相关 (20)
- XML (3)
- Apache common (2)
- 生活 (35)
- VMware (1)
- log4j (9)
- BeanUtils (2)
- 设计模式 (3)
- UML (1)
- UNIX (1)
- ibats (5)
- GT-Grid (17)
- ABAP学习 (17)
- ABAP (35)
- ABAP--ALV (11)
- ABAP--WEBDIMPRO (0)
- abap-sample (1)
- BEMS (2)
- flex (33)
- GIS技术 (3)
最新评论
1.当任何对象unload后,flash player不会自动的回收内存,机制本身判断应该是判断周期时间内增长内存量而去自动回收,当然也你可以通过System.gc() 去主动回收。但是这样回收是无法回收干净的。
2. flash player内存分配有两种机制,一种是静态的,当前我发现只用lite才有这个支持,他对内存管理比较严格,把独立的player都放里面。 第二种就是动态的,这个方式缺点就是产生内存散片,这个散片必须要根player over它才会全部释放,否则,散片部分一直增长。
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来对项目进程进行监控,可知道历史创建过哪些对象,目前有哪些对象没有被删除,创建的数量,占用的内存比例和用量,创建过程等信息;
总结:关键还是要做好清除工作,自己设置的引用自己要记得删除,自己用过的系统类要记得做好回收处理工作。 以上问题解决的好的话不需要自定义强制回收器也有可能被系统正常的自动回收掉。
2. flash player内存分配有两种机制,一种是静态的,当前我发现只用lite才有这个支持,他对内存管理比较严格,把独立的player都放里面。 第二种就是动态的,这个方式缺点就是产生内存散片,这个散片必须要根player over它才会全部释放,否则,散片部分一直增长。
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 非常实用的资料
2012-05-31 15:38 1222【改变输出swf的尺度,背景颜色或帧频】 在"Na ... -
Flex正则表达式规则
2012-05-31 15:35 17111.Flex正则表达式规则 1.1普通字符 字母、数字、汉 ... -
Flex中[Bindable]的使用心得
2012-05-30 16:55 920在Flex编程中,Bindble使用到最多的元数据。该标签可以 ... -
FLEX元标签_Bindable
2012-05-30 16:46 11061 概述 [Bindable ... -
Flex Bindable
2012-05-30 16:41 828对一个类声明绑定,相当于给这个类里的所有属性都声明了绑定。等同 ... -
Flex [Bindable] 以及使用方法
2012-05-30 16:37 1131绑定: 举个例子: 给下面的public变量加上[Bind ... -
关于flex开发自定义组件需要注意的问题
2012-05-23 14:24 1153一.首先回答,为什么要 ... -
Flex中自定义组件
2012-05-23 14:17 1113如要重写组件,就不得不了解Flex中组件初始化过程。初始化过程 ... -
flex,datagrid多列排序
2012-03-21 15:01 1078<?xml version="1.0" ... -
flex,datagrid 按照列来排序
2012-03-21 13:56 2139排序部分 import mx.controls.DateFie ... -
flex 动态给控件赋值,通过反射遍历MXML中的组件
2012-03-21 13:52 1373flex 动态给控件赋值,通过反射遍历MXML中的组件。当有1 ... -
flex双击不生效问题
2012-03-21 13:50 959今天用到flex的doubleclick的事件,但是不生效,原 ... -
FLEX datagrid 点击列头排序后,行编辑问题
2012-03-21 13:45 998点击列头排序后。行编辑事件结束后,adobe默认会自己重新将d ... -
flex内存管理机制
2012-03-20 13:44 938一.简述Flex内存释放优 ... -
Flex3 Profile的使用
2012-03-13 15:38 954flex的profile就是一个性能监测器,也是adobe向传 ... -
FLEX内存释放优化原则
2012-03-13 15:36 820FLEX内存释放优化原则: 1. 被删除对象在外部的所有引 ... -
flashplayer的缓存目录
2012-03-13 15:34 3060flashplayer的缓存目录是: XP系统下是C:/Do ... -
swf 更新后,客户端不需要清空缓存即可查看最新版本
2012-03-13 14:20 2390我们在用Flex开发应用的时候,每次修改了swf,上传到服务器 ... -
用RSL来为你的flex程序减肥
2012-03-13 14:19 1172用RSL来为你的flex程序减肥 问题:一个只有几个控件的 ... -
Flex控制session方法
2011-12-07 08:52 1080采用filter 监控 MessageBrokerServle ...
相关推荐
### FLEX内存释放优化原则详解 #### 一、引言 在FLEX开发过程中,合理的内存管理至关重要。不当的内存管理不仅会导致应用运行效率降低,还可能引发诸如黑屏、模糊显示等问题,严重影响用户体验。本文将针对“FLEX...
Flex 应用内存泄露的分析与诊断主要集中在 Flex 应用程序中由于内存管理不当...通过谨慎处理对象引用、正确管理事件监听器和利用调试工具,可以有效地减少 Flex 应用中的内存泄露问题,从而提高应用的性能和稳定性。
#### Flex内存泄露的原因 尽管AVM提供了垃圾收集机制,但Flex应用依然可能遭遇内存泄露问题。主要原因是对象引用关系导致垃圾收集器误判某些对象仍处于活动状态。具体而言: 1. **对象引用不当:** 当某个对象实际...
以下是一些解决Flex内存泄漏的关键点: 1. **删除无用对象**:确保在不再需要对象时正确地删除它们,避免它们在内存中驻留。这包括删除事件监听器、解除绑定数据等。 2. **事件监听器管理**:事件监听器是常见的...
本文将深入探讨Flex中的内存回收方法,以帮助开发者优化应用性能并避免内存泄漏。 1. **垃圾收集(Garbage Collection)**: 垃圾收集是Flex中实现内存管理的主要机制。它自动追踪并释放不再使用的对象所占用的内存...
Flex应用通常涉及大量的交互和动态数据处理,因此性能优化和内存管理是开发过程中的关键环节。以下是对Flex性能优化和内存查看的深入探讨: 1. **Flex性能优化**: - **代码优化**:减少不必要的计算,避免在循环...
标题 "FLEX内存不足,无法使用设计模式的解决办法" 描述了在使用Adobe Flex开发工具时遇到的一个常见问题,即内存不足导致无法使用设计模式。这个问题通常在开发者尝试打开或编辑复杂的Flex项目时出现,因为设计模式...
### Flex内存管理及相关内容 #### 一、Flex与ActionScript中的内存管理机制 Flex作为一种用于构建RIA(Rich Internet Applications)的应用框架,其背后的编程语言ActionScript(简称AS)支持垃圾回收(Garbage ...
本篇文章将深入探讨Flex虚拟机的内存管理机制以及如何预防和处理内存泄漏问题。 内存管理在任何软件开发中都至关重要,尤其是在动态语言如ActionScript中。Flex虚拟机采用了一种自动垃圾回收(Garbage Collection, ...
【Flex面试题】Flex面试题主要涵盖Flex的基础概念、开发框架、MVC模式的应用、内存管理、垃圾回收机制、前端性能优化以及与后端通信等多个方面。以下是对这些知识点的详细解析: 1. AS2与AS3的区别: AS2...
### Flex内存优化技巧详解 在开发Flex应用时,合理的内存管理是提高应用性能的关键因素之一。本文将基于提供的文件信息,深入探讨如何更好地优化Flex内存使用,并通过具体实例阐述如何编写更加高效的Flex代码。 ##...
在本专题中,我们将深入探讨如何使用SuperMap iClient 6R for Flex来创建一个基于内存数据的等级符号专题图。SuperMap iClient是一款强大的GIS(地理信息系统)客户端开发组件,它提供了丰富的地图操作和分析功能,...
在提供的压缩包文件"Flex内存数据做范围分段专题图"中,可能包含了示例代码、数据文件和详细的教程,用于演示如何在Flex环境中实现这一功能。通过学习这些资源,开发者可以更深入地了解如何在实际项目中应用SuperMap...
避免Flex内存泄露的关键在于良好的引用管理。以下是一些最佳实践: - 避免全局变量和静态变量持有长期存在的对象引用,除非你确定它们在整个应用生命周期中都需要。 - 使用完毕后及时解除事件监听器,避免形成循环...
在IT行业中,"APE(flex out of memory)"这个问题通常是与Adobe Flex开发相关的内存溢出问题。Flex是一种开源的、基于MXML和ActionScript的框架,用于构建富互联网应用程序(RIA)。当你遇到“Out of memory-cannot ...
- **内存概要分析器**:同样在Flex3与Flex4的高级版本中提供,用于监测内存使用情况,确保应用不会因为内存泄漏等问题而崩溃。 - **网络监视器**:仅在Flex4的高级版本中提供,可以帮助开发者监控网络请求的状态,这...
10. **最佳实践与性能优化**:学习Flex时,了解如何编写高效代码、优化布局和内存管理,以及如何利用缓存和数据流控制提升应用性能,是成为专业Flex开发者的关键。 通过阅读Flex全书籍,你将能够掌握这些核心概念和...
4. **事件处理**:解释Flex中的事件模型,如何监听和处理用户交互产生的事件。 5. **服务连接**:介绍如何使用Flex与服务器进行通信,包括HTTPService、WebService和AMF等数据交换格式。 6. **动画和效果**:讲解...