jquery + ajax 定时刷新出现内存大量泄漏
function ShowProgressDiv() {
var ID = $("input#idtxt").val();
$.ajax({
type: "POST",
url: "GetGridViewByConditionForm.aspx",
data: "id=" + ID,
cache: false, //不从缓存中去数据
beforeSend: function() {
$("div#ProgressDiv").css("display", "block");
},
success: function(msg) {
$("div#ShowSearchResult").html(msg);
},
complete: function() {
$("div#ProgressDiv").css("display", "none");
}
});
}
$(document).ready(function() {
var s = setInterval(ShowProgressDiv, 1);
});
不过一会,内存清耗很快,各位大哥可有解决方案。
------解决方案--------------------汗。。不会,帮顶下帖子吧
------解决方案--------------------好浪啊 每1ms请求一次
------解决方案--------------------你请求那么快,数据量大的话内存不可能不消耗的
------解决方案--------------------没办法,如果做实时的话,就算一分钟刷一次,一天也会消耗内存的,各位有好的解决方案吗?
------解决方案--------------------第一次发贴就遇到无解的。。。
------解决方案--------------------0.001秒的请求,定时最小也要0.025毫秒啊 。
------解决方案--------------------每次jquery的Ajax请求都会创建一个xmlHttprequest对象,理论上讲,长连接的请
求是一个无限递归,请求数量是非常大的,但是由于每次请求都会建立一个新的xmlhttprequest,而且
jquery不会自动回收资源,所以导致了内存溢出。
通过查看jquery API,发现jquery还有一个 complete对象,是请求完成后回调函数 (请求成功或失败
之后均调用)。 同时有两个参数XMLHttpRequest, textStatus。所以,我们只需要在请求完成后,将传
回的XMLHttprequest对象手工回收即可,代码如下:
$.ajax({
url: "http://www.jb51.net",
data: { name: "xxxx" },
dataType: "xml",
success: function (data, textStatus) {
//do something...
},
complete: function (XHR, TS) { XHR = null }
});
详细出处参考:http://www.jb51.net/article/30458.htm