Flash显示对象是否置于Stage上的最佳实践

这几天在解决场景滚屏“卡”的问题,一心想把CPU占用优化一些。优化前所有地图块加载后都会置于Stage上一起滚动,优化后将视野外的地图实时remove,理论上会有作用。实际测试下来数据如下:

 

改前

改后

起始物理内存

296M

254M

起始虚拟内存

291M

248M

起始AVM内存

213M

185M

结束物理内存

477M

286M

结束虚拟内存

471M

280M

结束AVM内存

399M

208M

CPU(单位:%

56~72,均值65

53~64,均值60

测试环境:

CPU2.3GHz单核、内存:3G、浏览器:IE6FlashPlayer Version11.2

由上可看出将不用的DisplayObject即时地从Stage移除,CPU消耗会有些减少,更可喜的是内在占用会有质的变化。

只是将Bitamp从显示列表remove,并未dispose bitmapData数据,可减少这么多内存占用。由此,可猜想显示对象在渲染时除对象自身占用内存外,还需要额外内存参与渲染。

希望有朋友能验证这个猜想。

标签:flash, actionscript3, 内存优化, 最佳实践

添加新评论