- Creator 版本: 3.8.1
- 目标平台: Android
- 重现方式:
往一个父节点底下增加含有相同一个精灵组件的节点,用的图片还是cocos引擎自带的,就这样实例化放个1000次,然后尝试删除掉释放内存。
const picNode = instantiate(picPrefab);
picNode.parent = fNode;
尝试过以下几点方式:
1、父节点清空:fNode.destroyAllChildren();
2、子节点们循环:fNode.children.forEach(item => item.destroy());
3、资源预制体释放:assetManager.releaseAsset(picPrefab);
4、计数减少:picPrefab.decRef();
5、资源预制体销毁:picPrefab.destroy();
6、A、B场景都勾选了Auto Release Assets,两个场景互相切换
以上这些方法都没法降低内存,希望官方人员能够重视并及时给予回复,这种测试用例20分钟都能写完。到底是我方法都用错了,还是真的存在这个问题。
3.7.4安卓原生也不释放,基本上内存越用越大直到崩溃,无论用什么方式摧毁资源都无法降低内存
怎么用的上代码看看
3.6.3除了websocket崩溃的问题算是最稳的了
之前项目一直都是用3.6.3,用了好久,就是性能这块原生一直被卡脖子,3.8.1公司做决定要升级,好不容易升级了,这难道还得回退回去?3.6.3都不知道出了多久了,怎么感觉以后都更新越来越拉,哎,发个牢骚
我公司之前升级退回过,都是有大bug
感谢反馈,能否提供一个完整的复现 demo,而不是代码片段。方便我们排查。谢谢。
还挺苛刻
我保证小版本是x.3就升级了
这次又用3.6.3的试了下demo,发现app在正常使用的时候内存还是释放不了,执行释放的代码后,只有切换到后台的时候,过了4,5秒才会正常地释放掉内存,内存降低在350以下。3.8.1哪怕切换到后台,内存只是降低显示的内存一百,删除节点的内存还是不能释放。这3.6.3和3.8.1这两种奇葩状况都不能做内存优化,我指定的android版本是android-30
之前的项目一直使用的android SDK都是Android30(也不知道是哪些贴吧前辈推荐的)。在经历项目性能卡脖子的阶段痛定思痛要优化性能这块问题,发现了没法正常释放内存资源这档事,目前2023-11-12为止总结出的解决方法就是:
妈蛋别用android30!这特么是个天坑版本!使用android33,我用8年前的小米5s都能正常释放内存!
android33还需要再测试更多的机型,免得项目有些老用户出现闪退、安装问题。到时候再进一步反馈吧
再次提醒:别用android30的SDK,改用Android33,还有,哪怕用Android33,勾选了场景自动释放资源,切换场景并不能正常释放资源,先这样。另外再提一嘴:哪怕android33了垃圾回收机制也不会随时随地地释放,加载大场景的时候也有可能内存溢出闪退。还是需要在切换场景等地方调用:sys.garbageCollect(),强制垃圾回收,还有NDK还是得用21版本的,不然打包不了
????居然是这个问题?
嗯,是的,真是surprise,motherFucker
居然是这个问题……太神奇了。
大佬,问一下sdk选择33之后,这两个插件的版本号你设置多少?as设置33后各种报错
这里我看了下,都是8.0.2
居然这么神奇,这个跟NDK版本有没有关联?
引擎组是不是可以排人验证下?
NDK版本没怎么频繁更换,只用过21.4.7075529和现在26.1.10909125的,感觉跟NDK没关联。