Creator微信小游戏document.createElement内存没有释放的问题

  • Creator 版本:2.0.9

  • 目标平台: 微信小游戏 (iOS / Android )
    微信开发者工具:Stable v1.02.1904090

  • 详细报错信息,包含调用堆栈:
    通过document.createElement(‘canvas’)创建canvas对象来绘图,多次创建的话内存一直增长直到微信异常中止。

  • 重现方式:
    demo程序:testCanvas.zip (501.5 KB)
    内存小的手机运行demo的“定时创建”,几分钟就会异常退出。

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

  • 手机型号 :测试过的 荣耀Android4.2.2,小米Android6.0.1,iPhone6P都存在问题

  • 手机浏览器 :

  • 编辑器操作系统 :

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

  • 出现概率:始终出现

  • 额外线索:

请帮忙查看一下demo程序,内存增长的原因,是否有内存释放的方法可以调用?或者有没有其它方法创建离线画板?谢谢!

@panda
@337031709
@huanxinyin
@jare

我跟踪代码,canvas 并没有多次创建,能否解释一下你的理解?

demo中是通过 document.createElement(‘canvas’)创建的,我期望中就是一个h5的canvas,但是也不确定是否会被转换为其它对象,尤其是微信小程序的情况。
(1)你说的没有跟踪到canvas多次创建,是不是指cc.canvas?
(2)那么引擎可能没有将h5 canvas转换到cc.canvas
(3)但是对于微信小程序,我理解微信提供的接口是 wx.createCanvas,是否引擎会将 document.createElement(‘canvas’) 适配到 wx.createCanvas ?
(4)我又翻了下文档,与h5 canvas对应的creator对象好像是graphics。那么graphics的兼容性和稳定性是不是更好一些?

我指的canvas是document.createElement(‘canvas’)获取的对象,微信小游戏是适配 wx.createCanvas 的。

demo中点击“定时创建图像”会使用定时器反复创建canvas。不过创建的canvas是局部变量,而且关联的node也会销毁,按道理说canvas也会被垃圾回收。这个demo也只是在微信小游戏时会导致异常,其它版本我看内存是会自动回收的。

你说的“canvas没有多次创建”,是指demo存在问题,没有多次创建,还是指引擎底层只创建了一个canvas?
以及,是否观察到内存增长直到微信异常退出的现象?