Flash强制垃圾回收
?java和flash的垃圾回收都是一个比较热门的话题,今天我也用一个例子来测试下flash的强制垃圾回收。主要用到的而一个类是LocalConnection。 ? ???? 在Flash player的debug版本中提供了gc的方法 ???? ??? ???? Flash Player初始化运行时,会向操作系统申请一大块内存,如果程序很小,有可能根本用不了这么多内存,但FP在开始时不考虑这些,大多数情况下,第一次申请的内存总是不够用的。第一次申请的内存大小,与操作系统、浏览器环境有关。
??? 懒惰式指:FP并不会一次把所有可以回收的对象全部回收,它一次仅会回收一部分,如果内存不够用,它会向操作系统申请,如果系统无内存了,它会再次回收,如果全部回收了仍不够用,Game Over! ??? 引用计数指:FP在内部给每个对象标记一个记号,当没有任何对象引用此对象时,它即是可以被回收的;如果一个容器内有许多相互关联的对象,当把这个容器从显示列表中移除,并且置为null后,它也是可以被回收的。 ???? ??? 下面是我写的测试代码,主要测试三中情况下内存的使用情况。 ??? Java代码?
?? 第一种情况,不设置不用元素为null和强制垃圾回收 ?? ?? Java代码? createAllChildrens();?? removeAllchildrens();?? //setChildrenNull();?? //doGc();?? 测试结果如下: ??? 可以看出占用的内存比较高,点击GC按钮内存依然是“居高不下”。 第二种情况,设置不用元素为null但不强制执行垃圾回收。 ? Java代码? ?? 设置null后虽然刚开始峰值很高,但是Flash Player执行了垃圾回收,很快内存下降到12K。 第三种情况,设置不用对象为null并强制进行垃圾回收。 Java代码? ??? 可以看出强制垃圾回收确实执行了。 内存泄露举例: 内存泄露解决方法: ??? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |