将Audio对象设置为undefined会导致内存泄漏吗?
Does setting an Audio object to undefined cause memory leaks?
我目前正在编写一个使用HTML5 Audio API的应用程序。在Chrome, IE和Firefox中,我注意到我可以创建一个Javascript音频对象,将其设置为播放声音文件,然后使其未定义,声音仍然会播放,如以下示例所示:
var a = new Audio;
a.src = 'longAudioFile.mp3';
a.play();
a = undefined;
当我以类似的方式使用许多音频对象时,如果我将一个设置为未定义,这会导致内存泄漏吗?或者当它完成播放/设置为暂停时,浏览器会清理它吗?
根据规格:
媒体元素不能因为所有对它们的引用都被删除而停止播放;只有当一个媒体元素处于不能再播放音频的状态时,该元素才会被垃圾收集。
对于一个没有显式引用存在的元素来说,播放音频是可能的,即使这样的元素不是仍然在积极播放:例如,它可以有一个当前的媒体控制器,仍然有引用,仍然可以被取消暂停,或者它可以被取消暂停,但等待内容缓冲。
播放媒体资源
也有清理指令:
& lt;…>释放媒体元素所持有的资源,或者通过非常小心地删除对元素的所有引用并允许它被垃圾收集,或者,更好的是,通过删除元素的
src
属性和任何source
元素的后代,并调用元素的load()
方法。作者使用媒体元素的最佳实践
据我所知,浏览器会在播放结束后清理它。
相关文章:
- 重复应用 d3 转换导致的内存泄漏
- IE7中的blockUI插件内存泄漏25kb
- Javascript闭包-如何防止内存泄漏
- jQuery Draggable:内存泄漏
- "检测到可能的EventEmitter内存泄漏”;使用Gulp+Watchify+Factor捆绑包
- 在Dojo类中递归调用setTimeout时是否存在内存泄漏
- 是内存泄漏
- 将处理程序留在img.onload上是内存泄漏
- 具有并发sse连接的node.js内存泄漏
- 简单对象的Javascript内存泄漏
- WeakMap是否会将我从父/子关系的内存泄漏中拯救出来
- Javascript绘制画布内存泄漏
- Node.js”;检测到EventEmitter内存泄漏”;
- 正在清理内存泄漏
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- Angular JS$编译服务导致$watch内存泄漏
- 如何防止和防范闭包内存泄漏
- 跟踪 JavaScript 内存泄漏的工具
- 页面刷新后javascript内存泄漏有问题吗?为什么?
- XMLHttpRequest循环内存泄漏