页面刷新时Javascript内存泄漏;补救?

时间:2010-06-07 14:46:15

标签: javascript internet-explorer memory-leaks

我在浏览页面时遇到内存泄漏问题(正如我在this SO帖子中所描述的那样)。

此时我想知道的是:有没有办法,在文档“卸载”事件(可以在页面刷新或关闭时调用),以清除所有内容?我正在寻找一个简单的解决方案,以确保一切都被破坏,以避免泄漏。这是否可能,或者我是否必须继续查看泄漏的细节并逐个对象地修复它?

更新:好吧,也许我的描述性不够。我不能(至少我认为我不能)将我的所有对象都设置为null:我有点击事件等的事件处理程序,因此应用程序需要不断“生效”直到它关闭。此外,如果我考虑在“卸载”方法(在退出页面时调用)中将所有内容归零,那么我的所有对象都必须具有全局范围(右)?解决这个问题的最佳方法是什么?有没有办法获取所有引用对象的列表,所以我可以将它们为空?我应该将我使用的每个对象添加到一个数组中,以便以后可以取消引用吗?

3 个答案:

答案 0 :(得分:1)

尝试window.onbeforeunloadwindow.onunload并将您使用的变量设置为null。 或者你还想找点什么?

答案 1 :(得分:1)

将对象设置为null,它们不会泄露。

答案 2 :(得分:0)

检查您是否使用随机反缓存网址参数,这可能会导致memory leaks

  
      
  • 当您在页面之间导航时,IE会尝试将所有脚本从内存中加载到同一个域中,因为很有可能在不同的页面上,您将需要几乎相同的脚本。
  •   
  • 添加到脚本URL的随机反缓存参数使其成为一个不同的脚本(至少缓存被这个愚弄)
  •   
  • 我们知道IE会尝试为域加载所有可能的脚本并保留它们
  •   
  • 随机的反缓存参数会导致内存泄漏,因为每次相同的脚本都有不同的URL,并且IE认为它们不同并且在每次重新加载时反复下载它们并将它们保存在内存中
  •   
相关问题