js 向html传输列表,javascript – Web Worker / Canvas的内存泄漏

使用Chrome,启动任务管理器(Shift ESC),单击工作器反转按钮几次,每次上升~10 MB.无论何时我从工作者那里收到一条消息,内存都会上升,它不是来自修改或访问画布,而是当工作人员将消息发送回主线程时.消息越大,情况就越糟糕.

将ImageData缓冲区添加到postMessage上的可选transferables列表没有任何区别,同样的结果,我想知道是否有另一种方法我应该接近它.

imageData = ctx.getImageData(0,800,600);

worker.postMessage(imageData,[imageData.data.buffer]);

主线程和/或工作线程是否正在转移所有权仍然无关紧要.我可以在控制台中看到imageData对象实际上转移了所有权,但内存仍在增加!我已经尝试使用chrome dev工具进行内存分析,但我无法看到增加的位置.

在dev工具中强制GC会清除内存.有时GC会自动运行,有时它不会自动运行,只有GC运行时,它才会释放10%的分配量.

我昨晚看了很多网页,但他们都说了同样的话,我觉得我忽略了一些简单的事情.

更新

Chrome版本48.0.2564.116 beta-m(64位)

添加了一个循环选项,似乎释放内存的唯一方法就是终止线程,我想避免每次都创建新线程而只是保持一个打开,因为每次创建一个新的时都会有明显的延迟

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值