dog*_*age 8 javascript audio-worklet
我的程序根据运行时生成的代码创建了很多工作集。它们仅使用很短的时间。有没有办法删除或取消注册旧的、未使用的工作集以重新获得内存?或者这是由 GC 自动完成的?
https://developer.mozilla.org/en-US/docs/Web/API/Worklet/addModule
在我看来,一旦它们被加载,它们就会一直留在那里,直到它所附加的上下文被破坏或者浏览器决定是时候处理它们了WorkletGlobalScope,所以我认为在使用后没有办法删除它们。
但我不是专家,只涉足过worklet。也许其他人会对规范有更细致的解读。
从规格来看:
11.3.3 Worklet 的生命周期 Worklet 的生命周期没有特殊的考虑因素;它与它所属的对象相关联,例如窗口。
每个Document都有一个worklet全局作用域,它是一组WorkletGlobalScopes,最初是空的。
WorkletGlobalScope 的生命周期至少与其工作集全局范围包含它的文档相关联。特别是,销毁 Document 将终止相应的 WorkletGlobalScope 并允许对其进行垃圾收集。
此外,用户代理可以随时终止给定的 WorkletGlobalScope,除非定义相应工作集类型的规范另有说明。例如,如果工作集代理的事件循环没有排队的任务,或者用户代理没有计划使用工作集的待处理操作,或者用户代理检测到异常操作(例如无限循环或回调超出),它们可能会终止它们。施加时间限制。
最后,特定工作集类型的规范可以提供有关何时为给定工作集类型创建 WorkletGlobalScope 的更具体详细信息。例如,他们可能会在调用工作集代码的特定进程期间创建它们,如示例中所示。
来源: https: //html.spec.whatwg.org/multipage/worklets.html#worklets-lifetime
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |