如何正确的内存管理

例如我要创建一个特效,这个特效包含node、sprite、spriteAtlas、animation、animationClip

1、我创建预先perfab好,还是代码去添加和初始化他的这些组件更好?不考虑包体大小,只考虑即时加载速度和内存回收的便利性。
2、正确流程是不是在对node.destroy(),然后这个特效所需要的spriteAtlas和animationClip需要用cc.loader单独释放?

这么基础的问题都没人愿意回答吗,简单的说两句也行啊。
都一堆加载随便他崩吗

内存回收请参考在论坛搜索关键字‘内存’。考虑速度就不要释放。

如果元素全由代码添加,那么你要考虑一下内存池的问题。如果元素可以巧妙的使用sences或者prefab添加,那么你可以考虑使用引擎自己的内存管理方式。

内存本身只是一个占用换速度的东西

这么说把 让你用脚本 就是为了不让你再考虑内存什么的这些问题, 慢点就慢点把 总的有舍取,
可你倒好 慢了后 还嫌不够爽,还非要回到内存自己非要控制的程度,
那你直接回到C++好了 要啥自己能控制啥,对把
让你用C++ 你又会觉得麻烦 这控制那控制的 又想要脚本 多好啊 什么都不用自己关心,
行了 什么都是你说了算 你说 你咋办?
你既然选了脚本 好 你唯一能做的就是 忍,
你要么忍速度 要么忍麻烦 反正你总得忍一个东西 没有完美的事情

你说我用不收钱的引擎,忍。我能忍,但这跟脚本有啥关系呢。不是说控制着控制那的,我也想不释放内存,但是玩10分钟就崩的游戏别人能接受吗。如此必要的东西,也有很多讨论,有很多方法,但是众说纷纭,我相信80%的creator项目都有做吧?

我想问的其实是更基础的问题,不是说用控制他们什么时候释放,而是怎么样能释放得干净。文档也看了部分,对于移除也没有一个整体的概念,因为文档里面都是针对单个东西的,这是说我创建一个perfab需要把里面各种组件加载的资源都要单独处理释放吗?

玩10分钟变慢了变卡了 我能理解,玩10分钟就崩了 我没法理解,感觉还是你程序代码的问题比较大,

你想要释放资源什么的 这种问题,最终还是归结到资源管理和场景管理方面了 ,资源释放处理不好,程序肯定崩溃,我给你一个建议是 不要在运行时候释放资源 最好是这样,场景切换后 统一释放把,大概只能说这么多了 具体问题你具体把握把

内存超了就会崩啊,我问的就是怎么处理释放是正确的,而不是那些花哨东西。

那只能抱歉了 我的都是切换场景的时候才释放资源,没遇到同一场景里还要动态释放资源的情况,你得问官方了,
但我记得官方 好像也说过 不建议运行中释放资源 因为你释放了一个perfab,想关的东西 都会被释放 但这个东西也许 其他perfab还在用的 可能就出错了

你的游戏很大么? 为啥会出现闪退的情况 js的内存回收机制是周期性的检测 当你没有引用该内存 又恰好碰到了检测时间他就会去回收 总结来说 官方的api 如果没有什么漏洞 肯定是能释放干净 至于什么时候回收 那得看时间 这就是为啥js释放内存(将引用计数变为0)内存没有马上下降的原因

一般来说 得先找是不是内存泄漏了 不能为了解决问题而解决问题 得找到源头 有可能是优化不够 也有可能是内存泄漏了

1赞