日期:2014-05-16  浏览次数:20673 次

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