v8对象堆栈溢出问题(v8::New, is heap out of memory:false)

  • Creator 版本:V2.3.3

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:

  • 重现方式:不断加载和释放spine(二进制格式的)资源就会容易出现

  • 之前哪个版本是正常的 :V2.1.2

  • 手机型号:所有手机都会,100%出现

  • 编辑器之前是否有其它报错 :<img

  • 出现概率:极高,连续战斗六场以上容易出现

  • 额外线索内在快照分析:
    相同的战斗,每一场都一样,加载的资源也一样。但对象数不会断堆加,特别是ArrayBuff、Float32Array、Array等,查看内容都是和cc.loader加载有关。

等十分钟后,对象也不会完成释放,但ArrayBuff、Float32Array、Array等明显回落,测试过程确定所有战斗相关spine资源和cc.Texture都已经释放干净,打印cc.loader[’_cache’]中的内容。


结论,由加载资源相关产生ArrayBuff、Float32Array、Array等对象会爆增,这些对象的释放会比资源释放慢,经过堆叠后会导致崩溃(v8::New, is heap out of memory:false),打印对象显示是ArrayBuff。

是 realtime + 二进制动画

jare哥秒回复,心安了不少:relaxed:

2.3.3 连续加载新的资源(每一帧加载一次) Crash 触发GL out of memory
(这里测试的是连续加载Spine资源 realtime + 二进制动画)




报错信息的意思是显存不够。只加载不释放,不崩才怪呢。

了解,2.X版本以后的PC模拟器不做内存备份,图片资源都放到显存了