内存倍数增长,每次cc.game.restart增加一倍。

我在大厅里的设置界面做了一个切换账号功能,主要逻辑是调用anysdk的logout,然后将之前加的永驻节点清除,然后回到登录页面,重新挂永驻节点,然后再次用微信登录进入主界面,内存基本上增长了1倍,之前是400多M 现在是700多M,再进一次就1.1G了。。 这怎么破?

要手动调用gc一次

JS 环境在 restart 的时候会自动被销毁并重新创建,但是有可能你的 C++ 环境中的对象没有被释放,可以在 Node 析构那里下断点检查是否有释放,也可以用 leak 工具查一下

我的c++环境对象并不多啊,能占用几百兆的内存吗?不解啊!

你的这段描述里面貌似没有用到 cc.game.restart,你确定重启了吗?

你看看我这 ,是调用了restart的。

你按 @491633197 的建议,试试看在 destroyApi 之后调用一次 cc.sys.garbageCollect() 再重启看看

测了很多次无效,换了个思路解决了。 但是这个感觉还是有问题,我已经release了所有资源,而且在转到登录场景时也是 cc.sys.garbageCollect() 了的。均无效。

换什么思路解决的呢?

logout,websocket close掉,转到login界面,让他重新登就完事了,现在内存正常了。 不过我们大厅400M内存,还是有点不可思议。 到底什么东西最耗内存? 我们的图片也没多大啊,就加了几个动画效果而已。

看了楼主的帖子之后 我也去查了一下 基本每次都增长40M不可回收内存,估计c++那层有泄漏,
然后我的处理是 先跳转到一个空场景,先 removePersistRootNode 然后 cc.loader.releaseAll, 然后 gc 然后再一帧 spriteFramecache texturecache removeall 最后 cc.game.restart 内存增长控制到 7M 算了 不去查下去了。反正 也不是很频繁的操作

MARK一下,我也遇上了同样的问题,但没有仔细去排查。