通过文档的加载方式,10个精灵节点加载同一路径同一张远程图片资源。
GFX Texture Mem占用是10份内存。
当遍历10个精灵节点按照以下方式移除
sprite.spriteFrame.decRef();
sprite.spriteFrame = null;
sprite.node.destroy();
assetManager.assets缓存里是没有这些资源了,但是GFX Texture Mem内存还剩下9份内存,并不是0;
经过调试发现,调用decRef的时候,引用计数减1后,会调用tryRelease尝试释放
最终add到_toDelete列表里。是以uuid为key存储的列表。
所以遍历10个节点的spriteFrame.decRef(),最终_toDelete列表也只会存储一份,也就只会执行一次asset.destroy();
调用asset.destroy(),最终会触发GFX Texture Mem的内存计算,就是说也只会处理一次。剩余的9次还存在。
现在我的疑问是
1.像这样加载远程资源,同一路径的图片加载N次,GFX Texture Mem内存就会占用N份,这样是否是正常的?
2.怎么可以把GFX Texture Mem剩下的内存释放掉?
3.假如第一条的问题是正常的话,那么想要加载非首包的资源(也就是远程资源),又想要GFX Texture Mem内存只占用一份的话,是不是就只能用Asset Bundle的方式去处理?