【发布时间】:2012-07-27 15:45:00
【问题描述】:
我目前正在构建一个单页面主干应用程序,该应用程序在单个页面上嵌入了多达 10 个单独的 Soundcloud iFrame。然后,用户可以查看其他页面,每个页面都包含自己的 iFrame 集。
我注意到每次加载一组新的 iframe 时,标签页的内存消耗大约会增加 80-100MB(根据 Chrome 任务管理器)。这个内存永远不会被放弃,所以在点击几下之后,标签很容易达到 300MB 并且变得非常慢。 Chrome 20 和 Firefox 13 都会出现这种缓慢情况。
每次页面更改后,我都尝试了 .remove()'ing 所有 iframe 以及通过 .html('') 清除容器元素,但都没有阻止内存增长。
本要点中提供的示例代码表现出与上述相同的行为。在每次加载时,单个 iFrame 会消耗大约 10MB 的额外内存。 https://gist.github.com/3202151
Soundcloud 嵌入代码是否在做一些事情来维护 iframe 的句柄并防止它被 GC 处理?有没有其他方法可以从 DOM 中删除元素以避免内存膨胀?
注意:我不能将所有曲目添加到可以加载一次的单个集合中,因为嵌入的曲目不是我自己的。
【问题讨论】:
-
我对这件事很感兴趣,因为我也使用
标签: iframe memory-leaks embed soundcloud