收藏
回答

requestAnimationFrame调用以及worker的onMessage问题

框架类型 问题类型 终端类型 微信版本 基础库版本
小游戏 Bug 微信安卓客户端 7.09 2.7

真机测试环境 小米8,系统为MIUI 11.0.4

如果在requestAnimationFrame的回调函数中如果没有执行绘图操作就返回(某些原因不需要重绘制屏幕上的内容)

系统就会持续不断的调用回调函数(无任何时间间隔)

期望的情况:回调函数的调用频率和回调函数执行内容无关


在主线程中接收worker发来的数据,其中的ArrayBuffer数据无法释放回收

worker中发送数据

var ab = new ArrayBuffer(1024 * 10 * 1024);

var id = 0;

var send = function () {

var msg = {id: id++, ab: ab};

worker.postMessage(msg);

setTimeout(send, 100);

}

send();

主线程中接收

worker.onMessage(function (e) {

console.log("main thread rece " + e.id + " " + e.ab.byteLength);

});

接收一定次数之后(约超过1.5G的数据) 小游戏会因为内存不足而崩溃

期望的情况:数据不再使用后可以正确的被垃圾回收




最后一次编辑于  2019-12-11
回答关注问题邀请回答
收藏

3 个回答

  • 叶轩
    叶轩
    2019-12-16

    这个问题已知,本质上是帧内没有drawcall导致。从这个版本开始,如果没有drawcall不会进行swap,会导致帧内时间很短

    2019-12-16
    有用
    回复 1
    • 陈勇
      陈勇
      2019-12-27
      多谢回复,另外关于onMessager传输大数据时疑似内存不能释放导致的崩溃问题可以确认么?
      2019-12-27
      回复
  • 小游戏运营专员 - 宏
    小游戏运营专员 - 宏
    2019-12-11

    你好,请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2019-12-11
    有用
    回复 2
  • 陈勇
    陈勇
    2019-12-11

    https://developers.weixin.qq.com/s/hed3cxm37Gdd具体的流程在代码中有注释

    2019-12-11
    有用
    回复
登录 后发表内容
问题标签