我的代码是大概是这样:
var settimeout_id=null; //定時器刪除.
var urls="system/ajax_book.php";
function a()
{
  $.ajax({
    type:"get",
    url:urls,//全局变量,请求的页面返回数据是:2-3KB
    ifModified:true, //false也試過不行
    cache: true,   //false也試過.
    dataType:"json",
    error:function(){alert("Please refresh the page or restart the browser")},
    success:function(table_date){b(table_date);}
  });
}function b(str)
{
   $("#page_scroll").empty(); //清空原來获取的数据.page_scroll是一个<ul>
  if(str!=null && str.length>0)
  { 
      var table_str="";
    
     //獲取了數據
     table_str+="<li id='数据'>数据</li>";
    $("#page_scroll").html(table_str);  //添加到ul中
    
    //这段代码就产生了IE内存溢出,如果我去除这段代码则没有.
      if(settimeout_id!=null || settimeout_id!="")
            {
                table_str=null;
                window.clearTimeout(settimeout_id);  //清除settimeout函數產生的內存消耗.
                settimeout_id=null;
                // 每隔 5 秒释放一次内存
                if(isIE){ CollectGarbage();}
            }
            //就是不加上面的代码溢出的更厉害.
            settimeout_id=window.setTimeout("a()",5000); //設置自動刷新.
    

  }
}
最后
$(document).ready(function(){
   a();
})//我应该怎么样修改这个局部定时刷新,才不会内存溢出呢?
另外我用的内存溢出测试工具是:
http://download.csdn.net/source/1814153

解决方案 »

  1.   

    貌似你发错了版面。
    if(settimeout_id!=null || settimeout_id!="")这里也应该是&&
    否则这个if始终都会执行!window.clearTimeout(settimeout_id);//这里当然就有问题了
      

  2.   

    我的贴发在JavaScript版面没有响应...
    我的要当settimeout_id不等于null 或者不为空的情况..就是表示之前有一个setTimeout了.
    才做清除.
      

  3.   


    if(settimeout_id!=null || settimeout_id!="")这里也应该是&&注意||和&&的区别。
    你仔细想下它的逻辑。
    if(settimeout_id!=null || settimeout_id!="")//settimeout_id无论是null还是空,这里都会执行的。
    settimeout_id是null时,那肯定就!="",settimeout_id=""时,那它就肯定!=null
    你仔细想想,别短路了。
      

  4.   

    dingsontao说得没错,应该是&&关系,不是||关系
    function b(str) {
    $("#page_scroll").empty(); // 清空原來获取的数据.page_scroll是一个<ul>
    if (str != null && str.length > 0) {
    var table_str = ""; // 獲取了數據
    table_str += "<li id='数据'>数据</li>";
    $("#page_scroll").html(table_str); // 添加到ul中 // 应该是并且的关系
    if (settimeout_id != null && settimeout_id != "") {
    table_str = null;
    window.clearTimeout(settimeout_id); // 清除settimeout函數產生的內存消耗.
    settimeout_id = null;
    // 每隔 5 秒释放一次内存
    if (isIE) {
    CollectGarbage();
    }
    }
    settimeout_id = window.setTimeout("a()", 5000); // 設置自動刷新.
    }
    }
      

  5.   

    我现在改成了 && 可是一样还是会有内存溢出...
      

  6.   

    这个可能是更你请求的页面的数据量有关系...
    可能你请求的数据量大,而且又是隔5秒刷新一次...
    试试延长一点时间...
    将$("#page_scroll").empty();
    改成$("#page_scroll").html("");