在Flex的程序中经常会用到Module,但是Module在使用了unloadModule方法之后还是会存在于内存之中,如何能够强制释放Module占用的内存,网上有人给出了如下解释:
1.何时真正执行垃圾回收不可预知。
2.垃圾回收总是在请求内存的时候触发,而不是在对象删除时发生。
可以通过人为抛出某种特别的异常会让Flash Player回收内存,代码如下:
- try
- {
- var lc1: LocalConnection = new LocalConnection();
- var lc2:LocalConnection = new LocalConnection();
- lc1.connect( "gcConnection" );
- lc2.connect( "gcConnection" );
- }
- catch (e:Error)
- {
- }
- 这种方法强制回收内存并不稳定。因此,在开发应用时不要依赖于这种方法来回收内存,只能将其视为辅助方法。
可以利用flex builder 的内存分析工具profile 来查看内存使用情况,在某些情况下可以利用Timer来抛出异常,这样Flash
Player就会强制进行内存回收,这个方法还是比较管用的,呵呵