2010-06-07 27 views
3

我在页面刷新时遇到IE中的内存泄漏(正如我在this SO帖子中所述)。刷新页面上的Javascript内存泄漏;补救?

我现在想知道的是:有没有办法,在文件“卸载”事件(可以调用时,页面刷新或关闭),清除一切?我正在寻找一个简单的解决方案,以确保一切都被破坏,以避免泄漏。这甚至是可能的,还是必须继续查看泄漏的细节并将其固定在一个对象的基础上?

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

+0

你使用自己的图书馆还是使用许多大男孩(jQ/Moo/Doj/Proto)? – James 2010-06-07 17:50:11

+0

大部分的代码现在没有使用jquery,但我使用它的一些功能 – hhj 2010-06-07 17:54:36

回答

1

尝试window.onbeforeunloadwindow.onunload并将您使用的变量设置为null。 或者您正在寻找更多的东西?

+0

我知道如何获得卸载事件,我只是想看看是否有一种方法来清空一切,而无需处理个人变量。 – hhj 2010-06-07 15:03:56

1

将您的对象设置为null,它们不会泄漏。

0

检查,如果您使用的是随机防缓存URL参数,则可能会导致memory leaks

  • IE试图保持在内存中的同一个域加载的所有脚本,你从页面浏览页面,因为出现在不同的页面上的可能性很高,所以你需要几乎相同的脚本。
  • 随机防缓存参数添加到脚本的URL使得不同的脚本(至少缓存由上当)
  • ,因为我们知道IE尝试加载所有可能的脚本域,让他们
  • 随机防缓存参数会导致内存泄漏,因为每次否则相同的脚本有不同的URL和IE认为他们是不同的,一遍又一遍下载他们每个重载和它们保存在内存