【问题标题】:Memory leak JQuery - all browsers内存泄漏 JQuery - 所有浏览器
【发布时间】:2011-09-22 17:03:20
【问题描述】:

我在我的网页中使用 jquery。我看到发生了很多内存泄漏,过了一会儿整个浏览器就停止了。我使用了筛子工具,发现数量在不断增加。的 DOM 元素,每次都没有。 4 个。

我在关联事件的方式上做错了吗? 还是因为我每 X 秒使用 setTimeout 重绘我的应用?

事件关联:

$('.bir_Names').click(showNames); 选择器 $('.bir_Names') 演化为一组大约 300 个元素,每个元素都会在点击时调用该函数。

设置超时 每 X 分钟,我删除应用程序中的每个 HTML 元素并重新绑定新数据并关联事件。我使用 jquery remove() 删除元素。也尝试过 innerHTML = '' 和 empty()。

我看到每次重绘都有近 30-40 MB 的跳跃,并且 Sieve 表明实际上没有删除任何已删除的节点。

任何帮助将不胜感激。这件事快把我逼疯了。

谢谢。

【问题讨论】:

    标签: memory-leaks event-handling settimeout jquery-1.3 multiple-browsers


    【解决方案1】:

    您没有提及哪个浏览器,但一些谷歌搜索似乎表明这是 IE 的一个已知问题。这是一种可能的解决方法:

    http://forum.jquery.com/topic/possible-memory-leak-in-remove-and-empty

    请注意,这是指 jQuery 的 1.2.x 版本。在您做任何事情之前,请确保您正在运行最新的 1.6.x 版本,以首先查看该缺陷是否已在 jQuery 中修复。

    [EDIT] ack...您确实声明了您的浏览器...'all'...所以可能忽略第一个链接。

    【讨论】:

    • 感谢您的回答。我在所有浏览器 IE6/7/8、FF、Safari 中都注意到了这个问题。我也尝试过包含最新版本的 jquery,但问题仍然存在。不确定我关联这些事件的方式是否存在根本性的问题。
    猜你喜欢
    • 2011-03-08
    • 2012-01-13
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 2016-06-15
    • 2012-01-14
    相关资源
    最近更新 更多