我反复使用AJAX调用从服务器获取JSON对象。随着时间的推移,浏览器的内存使用量会增长(尝试使用Chrome,Safari,Firefox)。使用Chrome的堆快照,我发现时间戳字符串没有引用。如果我拍摄一系列快照,我会看到字符串的数量不断增加。
$(function() {
var latestTimestamp = 0;
function fetchData() {
$.get("/parameter?format=json&since=" + latestTimestamp, gotData)
}
function gotData(data) {
latestTimestamp = data['timestamp'];
setTimeout(fetchData, 250);
}
fetchData();
});
其他说明:
timestamp
实际上是整数,而不是字符串。那么累积的字符串可能是临时值?+ latestTimestamp
可以阻止泄漏。 答案 0 :(得分:0)
完成数据[]后,您可以摆脱它:
function gotData(data) {
latestTimestamp = data['timestamp'];
delete data;
setTimeout(fetchData, 250);
}
答案 1 :(得分:0)
我认为这个问题在于jQuery和/或浏览器。我经常看到类似的泄漏,通常是AJAX调用。
不要每秒轮询服务器4次,而是考虑将数据从服务器推送到客户端。我不知道你正在使用什么平台,但如果它是.Net你可能想看看SignalR
答案 2 :(得分:0)
您是否尝试过cleartimeout javascript功能?如果没有,请试试这个。
var abc=null;
function gotData(data) {
latestTimestamp = data['timestamp'];
data=null;
clearTimeout(abc);
abc=setTimeout(fetchData, 250);
}