收藏
回答

webgl进程卡住

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug iOS 16.2 iPhone12 mini 8.0.32

复现路径:

1.在公众号上菜单栏点出的网页上,点击链接

2.点击10来次后(次数不一定),出现进链接卡住的现象。30秒后js代码崩溃

3.之后就每次点击都会卡住(换链接也一样),只有重启微信才恢复


现有信息:

1.是网页链接,用到了webgl

2.ios、安卓都有出现,但是只是个别机子上,会复现的机子很容易再次复现

3.尝试过同机型的其他机子,不容易复现

4.卡住以后点其他有用到webgl的链接也会卡住

5.相同机子在微信群里点击链接测试,未发现卡住(大概尝试了50次)

6.卡住后跟踪代码,卡在canvas.getContext

7.用的游戏引擎laya、cocos都会出现该现象


怀疑:

1.微信客户端的webgl线程卡住,导致用到webgl的其他链接也卡住

2.会不会在灰度测试

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

1 个回答

  • 林俊宇
    林俊宇
    2023-02-03

    1、你提到的“个别机子”是否是设备型号较旧的?内存较少的?

    2、根据你的描述,多次点击后才会发生,且卡住后跟踪代码,卡在canvas的创建过程,推测是内存泄漏了吧,检查下是否有及时销毁实例?

    2023-02-03
    有用 1
    回复 9
    • Star楼
      Star楼
      2023-02-06
      1. 复现设备是iPhone12-mini 16.2的版本,也有用户的安卓手机会出现
      2.每次点击都是点击网页链接,这些内存不是浏览器管理的么,需要网页自己销毁内存么
      3.网页链接初始逻辑中有初始webgl,我移除初始webgl就不会出现问题
      2023-02-06
      回复
    • Star楼
      Star楼
      2023-02-06
      感谢大佬百忙之中回复我,不然我还以为这个社区也死了
      2023-02-06
      回复
    • 林俊宇
      林俊宇
      2023-02-06回复Star楼
      浏览器管理的是你不用的/无效的代码,可以了解下垃圾回收机制。所以当你程序中分配出去的内存没有及时释放的话,就容易溢栈,也就是内存泄漏。所以当你不再需要使用某个实例的时候,最好手动销毁它(了解一下内存泄漏,就清楚如何去避免了)。
      2023-02-06
      回复
    • Star楼
      Star楼
      2023-02-06
      同一手机,同一链接,在微信上很容易复现,在其他浏览器上不能复现
      2023-02-06
      回复
    • 林俊宇
      林俊宇
      2023-02-06回复Star楼
      可能是因为微信不是单纯的浏览器,他还需要存储着如聊天记录、朋友圈等等的信息,比一般浏览器占用资源要多,加上你程序的消耗,更容易发生问题
      2023-02-06
      回复
    查看更多(4)
登录 后发表内容