【发布时间】:2010-07-15 18:17:59
【问题描述】:
我正在开发一个实时媒体浏览/播放应用程序,该应用程序使用浏览器中的<video> 对象进行播放(如果可用)。
我混合使用了直接的 javascript 和 jQuery,
我特别关心的是记忆。应用程序永远不会在窗口中重新加载,并且用户可以观看许多视频,因此随着时间的推移内存管理成为一个大问题。在今天的测试中,我看到内存配置文件随着每次后续加载而随着要流式传输的视频大小而跳跃,并且永远不会回落到基线。
我尝试了以下方法,结果相同:
1 - 清空包含创建元素的父容器,例如:
$(container_selector).empty();
2 - 暂停并删除匹配“视频”的子项,然后清空父容器:
$(container_selector).children().filter("video").each(function(){
this.pause();
$(this).remove();
});
$(container_selector).empty();
有没有其他人遇到过这个问题,有没有更好的方法来解决这个问题?
【问题讨论】:
-
自从提出这个问题以来,随着事情的发展,我正在更新答案!我相信“删除”修复在当时几乎可以肯定是一个浏览器错误,而这些天,我建议暂停视频元素,删除 src 属性并触发重新加载。之后,它可以安全地从 DOM 中移除。
标签: javascript jquery dom memory-management html