ios平台纹理内存释放有严重问题有demo请官方看看

  • Creator 版本:2.0.9

  • 目标平台: ios

  • 重现方式:点击加载,过几秒后在释放

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:100

  • 额外线索:
    目前只针对纹理和spine做了测试,就纹理这一块释放总会有部分资源未能释放,在我加载spine测试资源,在释放后却能将上次未释放掉的纹理资源释放掉。ps:目前只是动态将资源加载了进来,并未创建使用详情见demo

demo链接: https://pan.baidu.com/s/1_hFvWROAUqvs-jjHBI_40A 提取码: hvyv

@jare @panda

我们测试过是可以正常释放的,你加载的是cc.SpriteFrame,那就不能用cc.SpriteAltas作为释放类型。
使用release会导致后续资源无法重用,请考虑一下再使用。

[quote=“351369251, post:1, topic:76652”]
在我加载spine测试资源,在释放后却能将上次未释放掉的纹理资源释放掉。
[/quote]
你这个操作我们没有复现,他释放的依然是spine自身资源。

我使用
for (const uuid of this.atlasUUID) {
cc.loader.release(uuid);
}
确实在xcode上确实内存降了下来,但是还是多20M左右的占用。在我测试中,程序启动后,会稳定在85M左右的占用,此时我加载纹理,占用达到170M左右,在用上面方式释放后,会降到100M左右,而且不管我等多久,或者直接调用gc处理处都会在100M左右,我在加载spine资源,会多几M,在释放spine资源的时候,内存占用就会降回到86M左右而不是100M左右了
@337031709

@337031709 我们的项目比较大,资源比较多,现在在ios下面点开界面过多在iPhone6这种内存低的机型上会因为内存原因崩溃,所以如果可以希望能够解决下释放不干净的问题,或者说我使用方式有什么问题,能给一个好的建议吗?

引擎有个默认设置是这样的。


开发者可以开启它,当开发者释放了贴图资源缓存的之后,让游戏释放掉不再使用的img内存。
而用户可以通过cc.loader.release(); 来手动释放。
目前因为有个bug导致了贴图资源无法释放干净。
这个问题已经修复了,
PR:
https://github.com/cocos-creator-packages/jsb-adapter/pull/119/files
不过得等新版本发布才有效果。

好的!谢谢,新版本大概什么时候会发布?

这个不太确定,估计在5月份。

测试版也要等到5月份么?

你关注一下论坛吧,会有动态的。

好的,谢谢

@zzf_Cocos 帮忙在看看呢!
cc.macro.CLEANUP_IMAGE_CACHE = true;
添加了这个代码,对HTMLImageElement.js也进行了修改,但奇怪还是会占用部分内存,在释放spine资源的时候才能还原见图5,见下图:


图1:启动测试时的内存占用

图2:对纹理进行加载的内存占用

图3:释放纹理的内存占用

图4:加载spine资源的内存占用

图5:释放spine资源的内存占用

对,就是bug还在,等版本更新吧。

5月份有点久,我们这段时间就得准备IOS版本的事情。所以按照你们提交的git我修改了下,重新发布还是这样。除了上面的提交还有什么是要改的吗?你们修复了我先在本地进行修改测试下也行。

难怪我之前的游戏内存都到200M以上了,原来是spine没释放掉,哎没深究

@337031709 大佬,这个修复我们什么时候能看到啊?在2.0.10的测试版本中没提到这个问题啊!