Flex学习笔记(十三)——内存泄露
原因:1.?????? 某些对象不被全局对象引用时,忘记从全局对象清除对他们的引用,如Stage、主Application、类的静态成员变量以及使用单例模式创建的实例 2.?????? 无限次触发的Timer 3.?????? 隐式方式建立的对象引用,如为对象添加事件监听器。如 a.addEventListener(Event.Type,b.listenerFunc). 如果a是全局对象如stage,则b对象永远不会被垃圾回收,不过以下三种addEventListener不会内存泄漏 1)? 弱引用注册监听器,即第5个参数设为true 2)? 自引用方式,如 This.addEventListener(type,this.handlerFunc); 3)? 子对象引用 This.addEventListener(type,this.parent.handlerFunc); 方法处理:???????? 停止已经启动的timer ???????? 对组件应用了Effect,当删除组件时,先停止效果,再把效果的target属性设为null ???????? 使用ChangeWatcher.watch()后调用ChangeWatcher.unwatch()来清除引用 ???????? 使用ModuleLoaderde loadModule后,使用unLoadModule将其卸载,并将该模块对象的引用置为null ???????? 使用Graphics画图,将不再显示的图像使用clear()清除 ???????? 当Image使用完后,将source设置为null ???????? 当不需要音乐或视频时,停止音乐、删除对象、将引用设置为null 分析工具——profile? as:?????????????????? 点击【强制垃圾回收】,如果确定已经完全移除和清除对象的引用,则活动对象列表中的类会减少 ?????????????????? 累计实例数代表总共多少实例被创建,实例数代表当前存在的对象实例。如果运行Force GC后累计实例数和实例数数量相同,则可能存在内存泄漏。 ?????????????????? “内存使用情况”中灰线和黑线从不分离,则说明有内存泄漏。 Flash.system包???????? 提供了一些系统类,帮助开发者获取一些Flash的信息 提供一定的控制能力内存剪切板、摄像头、麦克风等 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |