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 |
测试环境: CPU:2.3GHz单核、内存:3G、浏览器:IE6、FlashPlayer Version:11.2 |
由上可看出将不用的DisplayObject即时地从Stage移除,CPU消耗会有些减少,更可喜的是内在占用会有质的变化。
只是将Bitamp从显示列表remove,并未dispose bitmapData数据,可减少这么多内存占用。由此,可猜想显示对象在渲染时除对象自身占用内存外,还需要额外内存参与渲染。
希望有朋友能验证这个猜想。