手机内存爆掉啦!!内存只加不减~求指点!! 项目被这个卡了

请问给位老大,开发好的native应用,内存一直暴增,destroy 和场景的自动释放都用了,没效果,还有什么可能导致的呢?或者还有其他什么方法可用吗?动态加载的资源是在切换场景的时候用cc.loader.releaseAll();统一释放的。其他通过cc.instantiate 创建的都通过destroy释放了,但是内存还是只加不减,一直加到崩溃为止~~求解决方案!!!!

6赞

你首先要找到是哪个地方导致的内存只增不减,是来回切换场景?还是战斗过程中?

是切换场景!

Creator的内存释放是由 JS 引擎控件的,当 JS 引擎 GC 的时候会把对应的 native 对象的内存也一起释放掉,但是这可能会导致内存释放不及时的情况。你可以在切换切换场景之后,手动调用 GC 试试。

调用这个试试? cc.sys.garbageCollect()

这个需要勾选场景的 auto release resources 选项才可以正常释放,loader releaseAll 目前并不能彻底释放资源

都已经勾选了,还是一点都不释放,不是释放不测底,是一点都不释放,1.2最多也就是不释放,再次加载不会重复增加内存,刚测试了1.3bate8,我靠惊呆了,竟然会重复加载,释放不掉还重复加载,内存直线升上去!!!

你是通过什么工具查看的?

我的是native项目,编译ios后通过xcode可以查看

@panda

资源重复加载的问题,你看看?

期待早日解决。我当前1.2.2 在xcode中查看,确实无释放迹象。

请问用网页预览时会这样吗?

弱弱地问一句,在chrome开发者工具中如何查看,现阶段还没留意过。

在pc浏览器观察没有问题,手机没有测试过~

打开任务管理器,然后就能查看网页占用的内存,并且还能看到其中 JS 部分占用了多少。

2赞

谢谢。已观察,没有明显增加的趋势,且有释放的迹象,只是不是立即释放。

顶起来~~坚决不能沉

1赞

跟上

1赞

放心吧,我明天就会看的,今天还在整 loader

1赞

跟踪了一下,目前阶段手动 load 的 prefab 是想释放干净很繁琐,我们会有新的解决方案。将 prefab 在场景中依赖不手动加载的话,可以通过场景的自动释放完成释放。另外,一个 prefab 加载好之后,不要去 loader 中 release 它,这样会被重复使用,不会造成内存的大幅度增长。