【问题标题】:Javascript memory leak when navigating导航时发生 Javascript 内存泄漏
【发布时间】:2014-12-11 10:38:04
【问题描述】:

当我在 web 应用程序的网页之间导航时进行持续时间测试时,我遇到了巨大的内存增加。

这不是一个单页应用程序,所以我正在导航:

window.location.href = "linkToOtherPage.html";

这应该清除所有使用的内存吧?我在 Chrome 中注意到的是,然后 type=renderer 进程(Chrome 中的选项卡)声称内存过多。每 2 秒导航一次时,它会在一夜之间吃掉 1000MB。 (从 30MB 开始)。

分析js堆会产生4-5MB的大小,所以不在JS-heap中。 是不是让 JS/DOM 引起的内存泄漏会一直持续到你关闭浏览器?我原以为当您导航到另一个页面时它会被清除。

【问题讨论】:

  • 您的网页上有什么?图片?闪光物体?视频?当您每 2 秒在夜间导航一次时,您只是在两个页面之间切换还是访问了数百个不同的页面?是否涉及浏览器插件?
  • 两页,它只包含几个按钮,一些文字在这里和那里,1/2 非常小的图像。它将从 page1.html 到 page2.html,从 page2.html 到 page1.html。
  • 那么,你是怎么解决这个问题的?

标签: javascript html dom browser memory-leaks


【解决方案1】:

我不太了解情况,但也许这很有用:

window.location.href 实际上是从缓存中加载页面,如果您一遍又一遍地引用同一个页面,并且如果音频 src 将通过 ajax 请求更改,那么您可能会将所有数据保存到缓存?! window.location.reload(true) 实际上可以再次从服务器获取数据。

我不确定我是否以任何方式帮助过你。但如果没有,抱歉让您失望了! ;D

【讨论】:

  • window.location.reload 只会重新加载页面,对吗?我还使用了window.location.replace("linkToOtherPage.html"),它不会将它添加到历史列表中,但没有成功。
猜你喜欢
  • 2013-07-09
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 2011-05-13
  • 2021-08-02
相关资源
最近更新 更多