【发布时间】:2011-03-30 15:38:32
【问题描述】:
我每 500 毫秒更新一次页面的值,并注意到 IE9 中存在由 jquery 的 $.ajax 方法引起的内存泄漏。
这是一个例子:
var refreshId = setInterval(refresh, 500);
function refresh() {
$.ajax('/url/object?get=theObjectNeeded');
}
在示例中,我没有对这些值做任何事情,但通常它是一个JSON 请求,我会根据它填充值。无论哪种方式都存在内存泄漏。
我在 Firefox 4 和 IE8 上尝试了相同的代码,但没有发生泄漏。
有没有其他人遇到过这个问题,有人知道解决方案/黑客吗?我可以做的一件事是每隔几个小时刷新一次页面以释放内存,但我不想这样做。
【问题讨论】:
-
@Darcy 你能在 ie9 中测试以下内容吗?内存消耗确实增加了,但垃圾收集确实启动并定期清理。 jsfiddle.net/YCM4g/1
-
如果您可以发布一些泄漏证明 - 它泄漏了多少 - 在什么样的时间段等,也很方便
-
@redsquare - 垃圾收集永远不会被调用。我在一台只有 4GB 的机器上将内存增加到超过 1.2GB,而且它永远不会清理。事实上,IE 在达到该点时会锁定。此外,如果我每 500 毫秒刷新一次页面,只需一个小时左右即可达到 1GB
-
@Darcy - 上面的测试应用怎么样?是否发生了同样的事情?
-
@redsquare。不,泄漏似乎没有发生。但是得到的对象也小得多,所以也许这与它有关。我还想指出,在我的一台测试机器上,即使版本完全相同,IE9 也完全没有泄漏! (操作系统也一样)
标签: html json jquery internet-explorer-9