播放spine骨骼动画后 调用cc.game.restart 内存暴涨。

在项目种使用spine动画,一切正常。 接着调用 cc.game.restart 重启。这个时候一直放着不管他。观察任务管理器,内存会慢慢地涨, 从原来的80多M 一直到600多M。 如果一直等还会崩溃。


然后我试着吧spine动画去掉,重复刚才的重启实验,不管放多久内存都不会涨。

@minggo 大神可以帮忙看一下吗,挺严重的。

1赞

替官方回复下:

  1. 所使用的引擎及版本? cocos2d-x or CocosCreator
  2. 能不能搞一个最小复现demo

使用引擎是 cocos2d-x, 版本是: 3.17.2, jsb 项目,必现!
其实就是一个 HelloWorld 工程。粘贴一下代码到 App.js。



        var spineBoy = sp.SkeletonAnimation.createWithJsonFile('res/spineboy-ess.json', 'res/spineboy.atlas', 0.6);
        spineBoy.setPosition(cc.p(size.width / 2, size.height / 2 - 150));
        var jumpEntry = spineBoy.addAnimation(0, "jump", false, 3);
        spineBoy.addAnimation(0, "run", true);
        this.addChild(spineBoy);


        let button = ccui.Button.create('res/HelloWorld.png', 'res/HelloWorld.png', 'res/HelloWorld.png', 0);
        button.addClickEventListener(()=>{
           cc.game.restart();
        });
        this.addChild(button);

以上代码可以直接复现,
restart-crash.zip (622.9 KB)

今天刚遇到这个问题,一开始以为是错觉。。。现在看起来,不是个例。

https://github.com/cocos2d/cocos2d-x/issues/17245
找到相同的问题了,但是不清楚具体的解决方案。

我也碰到了,只能弃用spine动画了

https://github.com/cocos2d/cocos2d-x/pull/20297