[LayaAir 1.0]cacheAs="bitmap"导致内存泄露
被设置cacheAs="bitmap"的UI,反复添加,移除,会导致对象IndexBuffer2D和VertexBuffer2D泄露,连带的,也导致其关联的数据对象泄露,游戏内用cacheAs="bitmap"优化的地方越多,开关界面次数越频繁,泄露越明显。还没有验证设置了cacheAs="bitmap"UI的面积大小,跟泄露量的关系,似乎面积越大,泄露也会越明显
请问如何规避这个问题,是否先不建议使用cacheAs="bitmap"?
重现引擎版本1.8.2,1.7.22
附带重现示例DEMO,点击btn开始执行,点击btn2停止执行
请问如何规避这个问题,是否先不建议使用cacheAs="bitmap"?
重现引擎版本1.8.2,1.7.22
附带重现示例DEMO,点击btn开始执行,点击btn2停止执行
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
Aar0n
赞同来自:
在上例中我们也可以看到,当使用bitmap位图缓存模式后,在CurMem内存数值上有所增加,由之前的17.22M增加到了18.27M,因为缓存位图时消耗了部分内存,但只要UI的宽高不是很大,增加的内存也不会太大。频繁刷新的CPU消耗
最需要注意的是UI是否会频繁的刷新,如果很频繁,CPU的损耗会很大,因为缓存位图时子对象一旦发生改变,那么引擎会自动重新缓存位图,缓存位图的过程会消耗CPU。
那么选择使用cacheAs的normal还是bitmap模式,或者不使用cacheAs,我们需要对内存的增加与CPU消耗作为重点考量因素。3.2 测试是否频繁重绘
LayaAir引擎提供的DebugPanel调试工具可以帮助大家查看游戏重绘区,在代码中增加 方法 ,编译运行项目后,浏览器中会出现调试窗口,如图4所示。
(图4)
我们勾选“ ”选项或“ ”。如果UI进行重绘了,重绘区域会显示出绿色框线,绿色框的左上角显示了重绘次数与重绘时间,性能统计工具的Sprite、DrawCall等也会发生改变。
实际上这种频繁刷新的不建议用
Aar0n
赞同来自: