我每隔5秒就从一个JavaScript驱动的(+ jQuery)网页运行一个AJAX请求,获取一组JSON数据。我把我的申请留在了一夜之间,到了早上我的电脑完全冻结了。我把它缩小到我的网络浏览器,现在,使用谷歌浏览器的资源跟踪器,我可以看到每个请求都会带来新的内存消耗,旧的JSON仍然存在。
由于源JSON不断变化,我用时间戳作为参数调用它,以避免缓存...我意识到缓存可以解决这个问题,但它也会使我的数据无效。
有什么想法吗?我正在覆盖上一个变量,所以我不明白为什么应该保留以前的数据。内存增加不会在AJAX请求的同一时间间隔发生,所以可能是其他东西。我很乐意私下向某人发送密码,如果有帮助的话。
谢谢大家: - )
Gausie
答案 0 :(得分:1)
你在做什么数据?
可能不是jquery的ajax罪魁祸首。
你正在成长吗?您是否忘记使用var前缀声明变量?你使用innerHTML =''删除内容吗?答案 1 :(得分:0)
首先,确保它是导致泄漏的ajax请求。不要每5秒请求一次这个ajax并检查内存是否仍然泄漏。
如果是请求,也许你覆盖了一个变量,但你有另一个变量指向这个数据? 像这样:
var a = json_object;
var b = json_object;
//A lot of other code here
var a = json_object2;
json_object仍在内存中,var b指向它。如果没有var b,也许你将它添加到某个地图或数组?在这种情况下,地图或数组指向它。
答案 2 :(得分:0)
由于您未提供某些代码示例,因此无法解答。 一般检查关闭不当使用... 无论如何 - 请查看此帖子http://www.crockford.com/javascript/memory/leak.html并使用Google或提供一些示例。 祝你好运!