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

使用后如何移除Worklet?未使用的Worklet是否会由GC自动回收?

Worklet内存回收问题解答

目前Web标准没有提供手动注销、移除已经加载到Worklet中的模块的公开接口,内存回收全部依赖浏览器的垃圾回收机制实现,具体规则如下:

  • 当Worklet实例本身没有被任何JS对象引用、也没有被浏览器平台逻辑持有时(例如Paint Worklet没有被任何CSS规则引用、Audio Worklet没有被AudioContext挂载、Layout Worklet没有绑定到任何DOM节点),整个Worklet实例以及其加载的所有模块资源都会被GC自动回收。
  • 如果Worklet实例仍被持有,但其中某个加载的模块没有被任何逻辑调用、模块导出的类/方法也没有被平台侧持有,主流Chrome、Firefox、Safari浏览器均支持自动回收这部分闲置模块占用的内存,无需手动操作。

最佳实践建议

  • 优先复用同一个Worklet实例,通过参数区分不同的运行逻辑,避免频繁调用addModule加载新模块,降低内存开销。
  • 如果必须使用大量临时Worklet,使用完毕后务必解除所有对Worklet实例的引用,同时移除所有关联的CSS规则、DOM绑定、音频节点挂载等逻辑,让GC可以尽快回收对应资源。

Worklet.addModule() 接口说明(翻译)

addModule() 是Worklet接口的内置方法,用于加载指定的JavaScript模块,并将其加入当前Worklet实例可执行的模块列表中。
方法语法:

addModule(moduleURL)
addModule(moduleURL, options)

参数说明:

  • moduleURL:要加载的JS模块的地址,支持运行时生成的Blob URL、Data URL等格式。
  • options:可选配置对象,目前仅支持credentials属性,用于指定模块加载时的凭证策略,可选值为omit、same-origin、include,默认值与普通fetch请求的凭证策略一致。
    方法返回Promise对象,模块加载、解析完成后Promise状态变为兑现,加载或解析出错时状态变为拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:45:11