You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Transferables时Web Worker内存泄漏问题(Chromium M92+)

结论:这是Chromium M92/M93引入的内存泄漏Bug,并非你的代码问题

你的代码逻辑完全符合Web Worker传输可转移对象的最佳实践:

  • 主进程通过postMessage将ImageBitmap转移给Worker,避免了数据复制
  • Worker使用transferFromImageBitmap接管图像数据,转换为Blob后再将ArrayBuffer转移回主进程

在Chromium M92/M93之前(包括Electron 13基于的Chrome 91)该流程完全正常,说明是新版本Chromium内核引入的原生Bug。你提交Bug报告的做法是正确的。

关于现象差异的说明

你提到的在线示例中内存最终回落但Electron中不会,是因为Electron的V8引擎和Chromium内存回收机制与普通Chrome浏览器存在差异,导致该Bug的内存泄漏表现更持久、更明显。

临时解决方案

  1. 移除transferables数组:这是目前能直接解决内存泄漏的方案,虽然会带来一定的性能损耗(数据复制),但能保证内存稳定
  2. 手动资源清理(尝试性):在Worker处理完图像后,可尝试手动释放相关资源,比如在postMessage后调用ctx.clearRect(0, 0, canvas.width, canvas.height),但这无法从根本上修复Bug,仅能缓解内存增长速度

内容的提问来源于stack exchange,提问作者Kajuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:22:16