首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML5音频和垃圾收集

HTML5音频和垃圾收集
EN

Stack Overflow用户
提问于 2016-10-27 19:55:17
回答 1查看 562关注 0票数 8

我正在创建一个使用HTML5音频的游戏。某些声音可能会同时播放多次(复调),所以我不使用原始的<audio>元素,而是在对象中保留对它们的引用,然后像这样播放它们:

代码语言:javascript
复制
playSound(id) {
  this.sounds[id].cloneNode().play();
}

我的问题是,克隆的节点是否会被自动垃圾收集,或者我是否需要担心它?至少在Chrome中,声音可以播放完,所以在函数退出后,节点不会立即删除,但由于节点没有插入到DOM中,我也没有引用它,所以一旦声音播放完毕,我就不能检查它是否从内存中删除。

EN

回答 1

Stack Overflow用户

发布于 2021-06-30 10:52:29

根据这个来源,音频可以被垃圾收集,但这似乎意味着你可能需要使用JavaScript中的new Audio()构造函数来利用这个特性,而不是引用到HTML元素。

https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement/Audio#memory_usage_and_management

内存使用和管理

如果对使用Audio()构造函数创建的音频元素的所有引用都被删除,那么如果当前正在回放,则JavaScript运行时的垃圾收集机制不会从内存中删除该元素本身。相反,音频将继续播放,对象将保留在内存中,直到播放结束或暂停(例如通过调用pause())。此时,该对象将成为垃圾回收的对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40283976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档