Egret社区

图片回收释放的问题

2016-8-26 09:45
625516
3银子
对egret 不是很了解,所以有个老问题想问一下,就是图片资源回收释放空间的问题,是否需要手动执行图片中texture的dispose方法,框架是否会自动回收,效率高不高,推荐怎么去操作,请大神们给解答一下,毕竟开发游戏被内存问题折腾久了。谢谢。

最佳答案

查看完整内容

1、去掉图片所有的引用 2、调用 dispose
分享到 :
1 人收藏

16 个回复

倒序浏览
yjtx  官方团队 | 2016-8-26 09:45:04
1、去掉图片所有的引用
2、调用 dispose
jj229937432  圆转纯熟 | 2016-8-26 10:19:45
yjtx 发表于 2016-8-26 09:59
1、去掉图片所有的引用
2、调用 dispose

谢谢,明白了
jj229937432  圆转纯熟 | 2016-8-26 15:57:22
yjtx 发表于 2016-8-26 09:45
1、去掉图片所有的引用
2、调用 dispose

有个很严重的问题啊,如果我执行了texture.dispose(), 相当于把resource里的资源释放了,但是用RES.hasRes(name) 判断却是true,我想问如果我创建两张相同纹理的图片,他们的texture是共同的吗,如果其中一张不用了是否需要释放它自己的内存占用,还是说不管它,知道百分百确定这张纹理不再用了,执行dispose。这样不太好理解啊。
yjtx  官方团队 | 2016-8-26 16:01:49
jj229937432 发表于 2016-8-26 15:57
有个很严重的问题啊,如果我执行了texture.dispose(), 相当于把resource里的资源释放了,但是用RES.hasRe ...

res 请使用 res 对应的 destroyRes 方法。 http://developer.egret.com/cn/ap ... Function#destroyRes

请确保都不使用了再调用
jj229937432  圆转纯熟 | 2016-8-26 17:35:05
yjtx 发表于 2016-8-26 16:01
res 请使用 res 对应的 destroyRes 方法。 http://developer.egret.com/cn/apidoc/index/name/RES.global ...

问题是我执行texture.dispose()之后,释放的不是当前图片的纹理,而是导致这个纹理资源就不能再用了,这难道是个bug?我该怎么办,图片用完了不用dispose是吗
ufo  登堂入室 | 2016-8-26 17:40:52
路过 看看
yjtx  官方团队 | 2016-8-26 18:07:12
jj229937432 发表于 2016-8-26 17:35
问题是我执行texture.dispose()之后,释放的不是当前图片的纹理,而是导致这个纹理资源就不能再用了,这 ...

dispose 后就需要重新加载
jj229937432  圆转纯熟 | 2016-8-26 18:19:36
yjtx 发表于 2016-8-26 18:07
dispose 后就需要重新加载

好吧,能不能告诉我,当我用到很多张相同图片的时候,假设移除其中一些,是否需要做一些图片回收的处理?目前来看dispose是肯定不行的。
jj229937432  圆转纯熟 | 2016-8-28 22:44:26
yjtx 发表于 2016-8-26 18:07
dispose 后就需要重新加载

而且我用chrome的内存快照看了一下,如果不释放已经移除的照片纹理,内存会一直上升,暂且认为当内存达到一定的回收级别的时候会统一回收释放,但是奇怪的是我后来手动执行了dispose,可内存并没有释放,内存占用始终没有下降,那dispose不就没有意义了吗,这个地方对于复杂一点的游戏很重要,一定要搞清楚才行,希望官方能不能给个可行的解决方案,在线等,谢谢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部