频繁canvasPutImageData是否导致内存溢出?
发布于 6 年前 作者 haoxiuying 5746 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

因为2.7.0版本出了个新的API,CameraFrameListener,我这里是准备实时将画面帧进行像素处理后用canvasPutImageData实时绘制到canvas画布上,大概启动几秒后摄像头画面和canvas开始慢慢卡顿,直到后面卡到几乎无法使用,微信会重启,应该是内存溢出了,通过内存面板看内存飙到接近500M但是CPU为0%,也写了flag让canvasPutImageData绘制完成后再进行下一帧绘制。依然很卡

但是假如在canvasPutImageData绘制之前或之后使用canvas的draw函数就不会出现卡顿,非常流畅。很诡异。莫非canvasPutImageData是一直在叠加数据么。

还有另一个关于CameraFrameListener真机调试会闪退的问题:https://developers.weixin.qq.com/community/develop/doc/0004ee64084ef0d1099875c8257000

  • 预期表现

不卡顿,流畅处理

  • 复现路径

频繁调用canvasPutImageData即出现

  • 提供一个最简复现 Demo

https://developers.weixin.qq.com/s/SSIZPpmh7L8J

3 回复

使用代码片段怎么复现这个问题呢?具体的机型、系统版本号、微信版本号是?

因为 CameraFrameListener 返回的 frame 数据量很大且很频繁,目前 canvas 处理大量数据性能不佳。建议使用的 webgl 来处理帧数据。

请问webGL怎么渲染相机数据?

回到顶部