【发布时间】:2017-03-10 02:24:45
【问题描述】:
我正在创建一个使用 HTML5 音频的游戏。某些声音可能会同时播放不止一次(复音),因此我没有使用原始的 <audio> 元素,而是将它们的引用保存在一个对象中,然后像这样播放它们:
playSound(id) {
this.sounds[id].cloneNode().play();
}
我的问题是克隆的节点会被自动垃圾收集,还是我需要担心?至少在 Chrome 中声音会播放,所以在函数退出后不会立即删除节点,但是由于节点没有插入 DOM 并且我没有引用它,所以我无法检查它是否从内存中删除声音播放完毕后。
【问题讨论】:
-
来自MDN的相关信息:“只要在播放过程中,使用 new Audio() 构造的 Audio 元素就不会被垃圾回收。它将继续播放并且在 pause() 之前一直可以听到被调用或播放结束。”
-
已经好几年了,你有没有完成你的项目,看看有没有问题出现?
标签: javascript html garbage-collection