现在是在iphone6上调试的,手机就1G内存,手机一会儿就撑不住,闪退了…
@panda 进入初始场景时:
释放初始场景的资源并加载主场景的资源,加载成功后进入主场景:
进入主场景后,切换了几个页面,都是通过cc.loader加载的prefab:
从主场景进入初始场景(在主场景销毁的时候通过代码GC过一次,在销毁的时候调用cc.loader.releaseAll,再加载初始场景的资源):
再点击初始场景页面上的按钮,在GC一次
再次进入主场景:
再次进入初始场景:
就这样开始越来越大内存,如果再进入战斗场景,然后切换回主场景,增加还会继续…
我之前给您发的Demo也是这样的情况,发您qq邮箱了,您看一下呢
我这周稍晚会看一下
好的,麻烦了
关注一下~~
同样发现内存增长,
在调用GC()后,有一定的内存释放,并在一段时间内内存并不会增加,保持平稳
但过一段时间之后,内存又开始持续上涨(在这期间没有做任何操作)
然后又掉GC(),有一定的内存释放(此时释放的内存只是释放了图片资源,但前期持续增长的内存并有的到释放)
,然后又保持平稳不增长,过段时间又开始增长,如此循环!
好的,我改改试试,谢谢@panda
这个PR会造成jsb下触摸事件异常。 定位到scriptCore.cpp ScriptingCore::handleTouchEvent中
在 return ret;前添加
removeJSObject(_cx, touch);
removeJSObject(_cx, event);
就可以了。 但是为什么会有问题我不懂,会不会有别的隐患也不懂。对比代码找出来的。
@panda 请问一下,我是直接修改应用程序的cocoscreator包体里面的文件就可以了吗?因为都只是js文件,是不是不需要重新build一个工程了啊?以下是我已修改的路径截图,劳烦您看一下对不对。还有就是我怎么确定已经修改成功了啊,也就是在build之后,修改过的文件在安卓工程的哪个目录下啊?
这个PR不止js引擎。C++引擎也有变动,涉及到的文件还是比较多,而且因为有其它改动也涉及到了相关文件,手动去改有点不现实,还是用git去合吧。你看我在上面说的。这个PR还有BUG。解决方式也有写了。
还有我看你是用的creator里包含的原生引擎。这个没办法去合PR的。要用自定义引擎才行。或者你等creator发版本吧。
再加上你说的修改的ScriptingCore的那一处
@yangzhu626 谢谢反馈
这个问题的正式修复在此:
https://github.com/cocos-creator/cocos2d-x-lite/pull/551
我的修复中,没有 remove touch 对象,是因为 event 对象是在堆上分配的内存,暂不知由于什么原因,它的 destructor 在生命周期结束后没有被调用,导致 Ref 中关联的移除 JS 对象的代码没有被调用,又由于再次发生事件时堆上分配的内存地址不变,导致 native 对象被链接到了一个错误的 JS 对象上。而 touch 对象是用 new 表达式构造的,所以它的内存在栈上,每次事件发生时,产生的新 touch 对象的内存地址不会相同,而且 touch 对象的析构函数也会被正常调用,所以不需要这个处理。
具体 destructor 未被调用的原因我会继续查。
请问下个版本大概在什么时候发布???
1.6 修复了类似的问题,你可以尝试一下内测版本