不能不说的秘密 最新Flash Player内存泄漏问题[原]
24 十二 2008
前些时间做了一个Flash调用摄像头的项目,帮忙测试的同事反馈,在出现内置操作界面进行允许和拒绝操作时,如果等待了一段时间会,整个桌面都会挂掉。
立马处理这个问题,还担心是截取画面的bitmapData没有清理造成的,但是发现不对,出现允许和拒绝界面时还没有开始调用摄像头视频,余下的截取画面操作应该也不会进行的。
在任务管理器中看到对应的浏览器进程的使用内存会不断的上升。重点看内存增量项。
一直下去就会将界面挂掉。尽管内存使用的并不是很多。
一番下来,干脆做了一个问题检测工具。
我的测试结果如下,最新的Flash Player 10存在问题。
version:WIN 10,0,12,36
vmVersion:1.0 cyclone
gc(垃圾回收)能正常运作,可以看到System.totalMemory获取到内存使用会周期性的降低。但是进程所分配的内存并没有降下来。
最终会导致机器缓慢,界面绘图混乱。
Adobe目前最新的就是10,0,12,36,win平台下的三种版本均出现该问题,其他平台下的版本具体情况不明。
总结为:只要显示内置的设置面板,就会出现该问题,同AS版和框架本无关。
记得前面写过的不能不说的秘密 Flsah Player全屏模式的BUG,现在有了姊妹篇了,问题将feedback给Adobe,相信下个更新版本能解决这个问题。
- 14 Comments , 16,257 Hits
- Filed under: 不能不说的秘密, 前端技术
-
Tags: Adobe, Flash Player
14 Responses for "不能不说的秘密 最新Flash Player内存泄漏问题[原]"
-
增长的倒是还不太快
有得补吗
-
上次在台湾的MMUG里面说也碰到这个问题了,说统一提交给ADOBE了,应该会有吧
对了,突然想起来一个问题
记得前段时间做了一个大型的控制序列帧的FLASH,作用是通过点击,来控制跳转并播放到不同的帧。只不过里面很多分支,序列帧大概有几千张
最开始偷懒,直接全部导入到FLASH中,经过一小时的导出,播放没问题,不过内存占用一只增长,哪怕根本不会用到的帧播放过去很久了,内存仍然高居不下,虽然将player最小化时,在任务管理器中看到内存瞬间缩小了。不过内存本身根本没有被系统回收(线程显示占用没了,不过性能中的PE使用上还是占用的),除非将player关闭后来还是将所有的帧拆开,做了LoadMovie和unloadmovie才好……
只要鼠标滑过,过一会自动会下降!
不过是在firefox下面hi,gc后totalMemory降下来,进程内存没有降,这个应该是正常现象的,FlashPlayer的内存在gc后,只是将内存释放给Player的内存管理器(暂且这么叫吧),而内存管理器是否将内存真正释放,取决于FlashPlayer对你的程序内存申请情况的统计数据。你创建新对象的时候,进程内存不一定会增加也是这个道理,这是Flash Player将已回收但未释放的闲置内存分配给新对象了。当然,我的理解不一定正确。
以上只是我的猜想,可能是FP10对内存管理作了调整吧。相信你也了解,FP是分大块申请内存的,同时也是大块释放内存的,而至于何时真正释放也应该是不确定的。
最近我也在深入了解这方面,因为自己的项目出现了性能问题,FP10在执行gc时(至于是gc的哪个阶段有待考证)会将执行AS的线程停掉,我现在的项目比较大,gc耗时比较严重,AS线程在gc时停掉直接导致我的程序很明显的卡0.5-1s左右,而同样的程序,FP9就基本感觉不出来。
不知道有没有官方对FP10内存管理的相关文档。
能不能问一下flash as 中不小心在代码中键入中文时会导致程序崩溃。如何处理?请赐教。
有好心人请发☞:[email protected]
先谢谢~\(≧▽≦)/~啦啦啦10.1.53.7版居然还有这个问题,ADOBE要疯!
Leave a Reply
2008-12-25 10:12