收藏
回答

内存一直增加问题

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小游戏 Bug ANDROID7 三星S8 6.6.7

引擎为Cocos creator 1.9.1

发布到小游戏平台,开启调试模式、性能监控,发现内存总体一直增加

但使用Creator在浏览器环境下内存总体却不会增加

有做内存释放的处理,在小游戏环境内不生效

回答关注问题邀请回答
收藏

7 个回答

  • 晨
    2018-06-28

    麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题

    2018-06-28
    有用 1
    回复 5
    • 林中潭
      林中潭
      2018-06-29

      removeLayer ( layerName ):  boolean {

      if (! layerName || ! this . _curScene ) {

      console . log ( "错误: layerName 或者 this._curScene 为空" );

      return  false ;

      }

      let  layer =  this . _layers [ layerName ]

      if (! layer ) {

      console . log ( "错误: 当前场景找不到layer" ,  layerName );

      return  false ;

      }

      this . _curScene . removeChild ( layer ,  true );

      console . log ( "removeLayer::::" , layerName )

      this . _layers [ layerName ] =  null ;


      layer . destroy ();

      cc . sys . garbageCollect ();


      ResManager . getInstance (). removeAll ();

      wx.triggerGC();

      return  true ;

      }


      2018-06-29
      1
      回复
    • 林中潭
      林中潭
      2018-06-29回复林中潭

      编辑器是CocosCreator,动态加载的prefab和spriteFrame都有移除

      ...

      let pfc=cc.instantiate(this.pop_free_coins);

      this.destroyList[this.destroyList.length]=pfc;

      pfc.parent=this.node;

      ...


      onDestroy(){

      for(let i=0;i>this.destroyList.length;i++){

      this.destroyList[i].removeFromParent(true);

      }

      this.head_ico.removeFromParent(true);

      }


      但是在微信开发版环境下内存总体一直增加

      2018-06-29
      2
      回复
    • 鸣
      2018-07-04回复林中潭

      @晨    能不能给外解决方案,这么多天了也不理!

      2018-07-04
      回复
    • 鸣
      2018-07-04回复

      @晨    再不解决,我要被项目经理喷了........

      2018-07-04
      回复
    • 鸣
      2018-07-09回复

      这个问题从提问到现在已过去近半个月了也没人跟进下.....

      2018-07-09
      回复
  • Change
    Change
    2018-07-04

    我也遇到了同样的问题 ,请问官方大大 有结果了吗 ?

    2018-07-04
    有用 1
    回复
  • 林中潭
    林中潭
    2018-06-29

    removeLayer(layerName): boolean {

    if (!layerName || !this._curScene) {

    console.log("错误: layerName 或者 this._curScene 为空");

    return false;

    }

    let layer = this._layers[layerName]

    if (!layer) {

    console.log("错误: 当前场景找不到layer", layerName);

    return false;

    }

    this._curScene.removeChild(layer, true);

    console.log("removeLayer::::",layerName)

    this._layers[layerName] = null;


    layer.destroy();

    cc.sys.garbageCollect();


    ResManager.getInstance().removeAll();

    wx.triggerGC();

    return true;

    }


    2018-06-29
    有用 1
    回复
  • Nikeo
    Nikeo
    星期一 14:45

    这个问题还没有解决方案吗?

    星期一 14:45
    有用
    回复
  • 三点水
    三点水
    2018-10-19

    随便写了几个页面,页面之中就简单列表,发现内存的确会随着操作时间而缓慢增加,一直没有下降回初始值,就算调用了重启API也是没降到初始值,求解惑.....

    2018-10-19
    有用
    回复
  • X
    X
    2018-07-09

    解决了吗? 有没有解决方式?

    2018-07-09
    有用
    回复 2
    • 林中潭
      林中潭
      2018-07-09

      目前临时的解决方案是尽量减少 cc.Instantiate 的使用次数,感觉是每创建一次都会造成内存增加,并且很难降下来

      2018-07-09
      回复
    • X
      X
      2018-07-10回复林中潭

      官方现在是什么态度,其实我到现在都还不知道原因,你说的cc.instantiate我没怎么用到过,而且可以确定的是我在看到有明显内存增长,是没有执行过cc.instantiate

      2018-07-10
      回复
  • 鸣
    2018-07-04

    同样受这个问题困扰中,内存不断增加,不会下降,研究了5天了,没有解决,在这里发现还有这么多同行.......

    2018-07-04
    有用
    回复 3
    • 林中潭
      林中潭
      2018-07-09

      目前临时的解决方案是尽量减少 cc.Instantiate 的使用次数,感觉是每创建一次都会造成内存增加,并且很难降下来

      2018-07-09
      回复
    • (^_^)
      (^_^)
      2019-06-05回复林中潭

      少使用cc.instantiate,怎么用对象池啊

      2019-06-05
      回复
    • (^_^)
      (^_^)
      2019-06-05回复林中潭

      我也遇到你这个情况,蛋疼

      2019-06-05
      回复
登录 后发表内容