创建100个spine,内存爆掉了,一直涨

如题。@jare,添加了帖子了
两个场景,每个场景创建100个spine,5秒后切换场景。内存爆掉了,一直涨。
ios的xcode可以观察到,真机调试,直到1.3G,程序就crash了。
android的话就更快了。

100个SPINE 那也太多了吧。。。
场景里跑十几个就比较没效率了啊(cocos2dx)

你这个很明显是内存泄漏啊

就是为测试内存泄漏,引擎的spine存在内存泄漏

引擎内存泄漏,我这两个场景就是添加100个spine,没有什么东西

感谢反馈,经测试,在原生平台上,创建 spine 节点时存在微小的内存泄露,如果重复大量创建,问题会比较明显。我们会继续跟进这个问题。

4赞

感谢@jare 大神,希望后面的版本可以修复,谢谢。

helloworld.zip (920.8 KB)
经楼主反馈,怀疑是 SkeletonAnimation 构造函数中调用了 initialize,而后 SkeletonRenderer 在 initWithXXX 中重复调用了 initialize 导致的

@jare 想问问下,这问题已修复了吗?感觉1.5.1 beta 4 spine 还是会造成内存泄漏

有解决吗?我也遇到这问题 :cry:

是这样的。。。还好我们游戏平均在线时间只有半小时

接受不了 :disappointed_relieved:

void SkeletonAnimation::update (float deltaTime) {
super::update(deltaTime);

deltaTime *= _timeScale;
spAnimationState_update(_state, deltaTime);
spAnimationState_apply(_state, _skeleton);
spSkeleton_updateWorldTransform(_skeleton);
SkeletonBatch* batch = SkeletonBatch::getInstance();//加上这两句
batch->update(deltaTime);//加上这两句

} 我js版本3.13也存在严重泄露 加了这两句就好了

哈啊哈这个我也发现了的,,,,,我差点都以为是我告诉你的了,,我都告诉好多人了,,证明这个方法是对的

能解释下加这两句的原因吗?

哪个方法?快告诉我呀!

3.15的代码我看感觉是没必要加这一步的,SkeletonBatch的update也是没帧都调用重置command回来的,并不会导致command持续的申请新内存。command占用的内存为最大cmd数量的内存。楼主加这个代码是因为其他的地方也有内存泄漏吗?

:sweat:这个问题解决了吗。