大型游戏关于内存池释放方法的疑问

  • Creator 版本:1.9.2

  • 目标平台: iOS / Android

引擎开发大神们好,我们在制作大型游戏时,遇到内存控制的瓶颈。在真机测试时,短时间内从【主场景】切换至【战斗场景】(可理解为用户想再挑战一次打不过的关卡),会造成内存不断上升。已经尝试许多的方法,现在将我们项目的架构,与已尝试过的内存释放方法列出,希望各位大神给指条明路,应该如何搭配才可以将内存控制好。

  • 内存情况说明:

  • Login sence占用:150 MB +

  • Main sence占用:450 MB +

  • Battle sence占用:200 MB +

  • 内存疑似泄露内存情况

  • 开始挑战,Main sence 切换至 Battle sence 内存:650 MB+

  • 战斗结束,Battle sence 切换至 Main sence 内存:750 MB+

  • 5~10秒内再次挑战,Main sence 切换至 Battle sence 内存:850 MB+

  • 不断循环此操作,能将内存突破1G以上。此情况将导致iPhone6或其他1G左右机型无法顺利游戏

在论坛中图片不能放大(或者我不知道),可右键–>打开图片,查看大图

2赞

来用cocos2dx(js)

别闹……项目开发了1年多,都开始内部删档测试了……

可能以后也会遇到,mark一下看看是啥问题

  • -喜欢单场景的路过。

我给你说一个办法你试试Main sence下的所有节点改为常驻,只要进入到Battle sence了,之后就在不会切场景

还是应该找出内存增加是哪些东西在增加。可以把所有的ccobject存起来,每次dump所有的对象,然后做diff。xcode不是有memory instrument么,不晓得能不能调试ccc。

这个的套路是mainsence永远不关闭,然后battle就像是一个perfab一样被onLoad了?

删相关的代码,然后定位出问题

圖太小了吧,都看不到。一般做法都是加一個loading scene來做釋放textures,sprite frames,UI檔及遊戲文件佔用的內存,再來是異步加載資源。

我在小游戏环境做过测试,切场景内存会一直涨,官方目前说是微信那边有问题
你如果也是小游戏环境的话,可能也这问题
但如果是H5环境的话,应该是你自己的问题,内存泄漏了
如果是native环境的话,我没测试过

这个感觉难救。我们的scene是直接维护的一个层,所有的图块、对象的创建释放都是我们自己去控制的。也用了AIO,我们双场景(项目比较特殊,会同事存在两个场景)峰值230M左右。同屏5方向动画,20个角色帧率在30上下。

這算是什麼辦法?只是逃避而不正視問題。Battle scene運行的時候main scene的紋理,節點完全應該要注銷掉,一直常駐對內存的壓力不是更大嗎?還不排除有logic bug。

我以为楼主说的是小游戏环境,这不叫逃避问题,而是正视问题后的无奈,你应该没搞过小游戏

建议只用一个场景就可以,自己实现切换场景,不要用引擎那一套,经验之谈!

以目前的情况来说,同意

樓主根本没提過是小遊戲吧,如果是那個環境,那根本不能搞得成大型的遊戲。

我看错了不是么,最近讨论内存的都是小游戏的,我习惯性的认为说的是小游戏了
万一有人在小游戏环境做出大型游戏了呢:wink:

后来小游戏你们是怎么解决内存问题的,还是放弃了小游戏?

你这个经验只谈,在大项目上有没有实践过?