flex中关于内存释放几个注意的地方(zz)
2010-02-21 16:21
996 查看
flex开发中关于内存释放几个注意的地方
1.监听事件时用弱引用方式(特别是对Applicatiion.applicaion和Stage的事件监听),方式如下:第五个参数值为trueApplication.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;
}
}
相关文章推荐
- flex开发中关于内存释放几个注意的地方
- arcengine 开发几个注意释放内存的地方
- 用OPC Client开发时,需要从如下几个地方注意内存泄露
- 关于atlas和webpart开发几个需要注意的地方。
- 关于Office OCR的几个注意的地方
- 关于Office OCR的几个注意的地方
- C++ vector容器释放内存应注意的地方(二)
- 关于写Windows service程序启动和停止需要注意的几个地方
- <再看TCP/IP第一卷>关于网络层及协议细节---ICMP协议几个要注意的地方
- 关于linux和win7双系统的安装几个注意的地方
- 关于循环语句中的几个需要注意的地方
- C++ vector容器释放内存应注意的地方(一)
- C++ vector容器释放内存应注意的地方(三)
- 找了几个地方:发现关于SQL 的基本使用--sql日期精确推算
- 关于使用ASP.NET4.0 OutputCacheProvider做缓存注意的地方(缓存放入redis)
- 关于linux下C++开发的几个注意事项
- 关于指针和内存的几个问题
- 关于创建Immutable对象时需要注意的几个问题
- 关于Flex Ant的相关注意事项
- 关于字符串和memset,需要注意的地方