`

关于flex4.0回收(强制回收)

阅读更多

adobe的内存回收机制确实不尽人意.特别是大数据量时内存回收问题更显突出.

以前有哥们曾经探讨过用异常的方式使flex强制进行内存回收.

不过flex4.0之后框架的性能等有明显提升,而且一些类也添加删除了不少方法

现在小小总结一下

 

gc的核心代码如下,GCClass

		public static function GC()
		{
			try
			{
				var lc1:LocalConnection = new LocalConnection();
				lc1.connect('引发异常内容');

			}
			catch(e:Error)
			{
			}
		}

 

测试目标:1.序什么时候gc

              2.将对象设置为null是否有用

              3.创建监听后是否应该及时移除

              4.videoDisplay在flex3.0和4.0中的区别

 

 

测试方法:在主程序中调用定时器或者在帧中,执行测试代码.

主要测试代码:

a.创建对象

private function gcTest():void
{
      var obj:Object= new Object();
}

 

在flex3.0中内存是一直网上跳,但在4.0中框架可能做了处理,内存不会消耗太多.

如果加入gc代码

 

private function gcTest():void
{
      var obj:Object= new Object();
      GCClass.GC();
}

 

 

 则内存会一直平稳不增长.

b.添加监听

添加监听后必须移除监听,才能在强制回收时释放所占内存

c.加载外部文件flv

		var flvplay:VideoDisplay = new VideoDisplay();
		this.addElement(flvplay);
		flvplay.source ="video2.FLV";
		flvplay.play();
//		flvplay.source =null;
				
//		//首先关闭啊
		this.removeElement(flvplay);
                                GCClass.gc();

  

只有在关闭流(flex4.0中flvplay没有close方法,只能将flvplay.source=null),并移除显示对象,才能在内存回收时释放掉所占内存

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics