[]关于大量图片加载绘制后的内存暴增的疑问
我们有一个需求是 有302个不同的头像,需要预加载 之后逐个绘制在界面上。
实现很简单,我通过Laya.loader.load预加载把302个图片资源加入到内存中,然后通过getRes 和 drawTexture 添加SPRITE对象到屏幕中。
预加载后的初始内存为29M左右
之后开始逐个添加SPRITE,在添加第1个到第80个头像的时候,内存显示稳定在29M
但是当添加第81个SPRITE头像的时候,内存会突然增长16M,变成了45M左右,之后每添加到第81个SPRITE的时候内存同样会暴增16M。302个头像SPRITE全部添加后内存显示在80M左右。
那么问题来了。。按照我的理解 预加载资源后 , 通过getRest 来使用的资源并不会额外增加资源内存的开销,而且前80个SPRITE的添加,内存并没有增长。那为何第81,161,241个SPRITE的添加各自会突然增加16M的内存。并且这个激增的48M内存 是无法通过clearRes 进行释放的。
为何会造成这样的情况,这额外产生的48M内存 是什么如何可以释放?麻烦解答。。。万分感谢
以下为图例:
添加第一个头像后的内存显示:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
添加第80个头像后的内存显示
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
添加第81个头像后的内存显示
实现很简单,我通过Laya.loader.load预加载把302个图片资源加入到内存中,然后通过getRes 和 drawTexture 添加SPRITE对象到屏幕中。
预加载后的初始内存为29M左右
之后开始逐个添加SPRITE,在添加第1个到第80个头像的时候,内存显示稳定在29M
但是当添加第81个SPRITE头像的时候,内存会突然增长16M,变成了45M左右,之后每添加到第81个SPRITE的时候内存同样会暴增16M。302个头像SPRITE全部添加后内存显示在80M左右。
那么问题来了。。按照我的理解 预加载资源后 , 通过getRest 来使用的资源并不会额外增加资源内存的开销,而且前80个SPRITE的添加,内存并没有增长。那为何第81,161,241个SPRITE的添加各自会突然增加16M的内存。并且这个激增的48M内存 是无法通过clearRes 进行释放的。
为何会造成这样的情况,这额外产生的48M内存 是什么如何可以释放?麻烦解答。。。万分感谢
以下为图例:
添加第一个头像后的内存显示:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
添加第80个头像后的内存显示
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
添加第81个头像后的内存显示
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
cuixueying
赞同来自:
如何将HTML5引擎LayaAir的性能发挥到极致
用as写了一个示例:仅供参考
veronsl
赞同来自:
附件中是最新的DEMO 麻烦帮忙看一下,谢谢