项目架构:S2SH+Jquery测试性能,打开主页,Firefox占用内存为90M,
开了一个周末之后,内存涨到了600M这个怎么解决啊,js好像也没有清理缓存啊?

解决方案 »

  1.   

    采用其他技术,如服务器的推、或是拉、dwr有comet
    类似帖子:http://topic.csdn.net/u/20100414/13/12ff191f-31c5-4758-81d5-066618648916.html
      

  2.   

    1. 可以考虑试试看chrome或者ie是否有相同的问题,也许只是firefox的问题
    2. 可以考虑观察一段时间,看看内存是否是线性增长的。
    3. 可以考虑关闭浏览器再打开网页
      

  3.   

    按照您说的在测试在
    1、关闭了FF,用IE7测试,打开时IE7占用内存为70,836K
    2、等跑了几个小时再观察
    3、这个不好吧,关闭在打开,占用内存肯定是清了
      

  4.   

    JS 內存溢出了  有時候需要手動清理JS 對象
      

  5.   

    ajax  不是有个无状态刷新吗    你可以用那个试试 
      

  6.   


    用过的就是Jquey 的$.ajax()方法
      

  7.   

    还有就是 3个实时刷新的框 你是自己append上去的还是 先removed 后在append ? 
    如果一直都在append 会出现这问题 
    如果是先干掉再添加dom对象的话应该不会是这问题
      

  8.   

    实在不行就用普通的Ajax技术啊,客户端内存一直涨,那应该是JS的问题.
      

  9.   

    附上代码:setInterval("intiAreainfo()",5000);//获得区域信息
    function intiAreainfo() {
    $.ajax({type:"post", url:"areainfo_action!areainfoSum", 
    dataType : "text",
    error:function () {
    $("#errorMsg").html("获取区域信息失败");
    }, success:function (data) {
    if(document.getElementById("errorMsg").innerHTML=="获取区域信息失败"){
    $("#errorMsg").html("");;
    }
    var AreaList = eval('('+ data +')');
    clearTable();
    var tbObj=document.getElementById("AreaMonitor");
    for(i=0;i<AreaList.data.length;i++){
    //先插入行,再插入列,再给单元格赋值。
      var newRow=tbObj.insertRow(tbObj.rows.length);
      var new_name=newRow.insertCell(newRow.cells.length);
      new_name.innerHTML=AreaList.data[i].name;
      var new_num=newRow.insertCell(newRow.cells.length);
      new_num.innerHTML=AreaList.data[i].num;
      if(AreaList.data[i].name=="全部区域"&&AreaList.data[i].num>=ii){
       ii=AreaList.data[i].num+1;
       document.getElementById("embedinfo").innerHTML="<embed id=\"wav\" hidden=\"true\" autostart=\"true\" src=\"alarmSound/wmpaud8.wav\" type=\"audio/wav\"></embed>";
       alert("泳区人数过多,请停止售卡!!");
      }
     }
    }
    });
    }
    //删除区域信息
    function clearTable(){
      var tbObj=document.getElementById("AreaMonitor");
      for(var i=tbObj.rows.length-1;i>0;i--){
      tbObj.deleteRow(i);
    }
    }这样的循环有3个,问题是出在哪呢?
      

  10.   

    js和as有一个共同的缺点就是,当运行了一段时间后,内存和CPU都会有不同程度的增加。就像你玩as写的flash游戏一样,如天书等等。
    目前除了关掉浏览器以外我还真的没有听说过有什么其他的方法去解决。
    GOOD LUCK......
      

  11.   

    每个页面都首先加上清除函数。var timeLog;
    clearInterval(timeLog);
    timeLog = setInterval("intiAreainfo()",5000);怀疑从某个包含刷新的页面跳到其他页面又跳回来。但是,前面那个间隔刷新的并没有清除,导致刷新过多。
      

  12.   

    使用sIEve这些工具,查看你的页面是否有内存泄漏
      

  13.   

    应该是不存在这样的问题,默认的index.jsp就是一个加载一个js
    这个js有3个实时读取数据库的函数,在测试的时候并没有页面之间的切换
      

  14.   

    $jQueryObj.remove()和$jQueryObj.detach()不会把对象从jQuery的对象树中删除,
    $jQueryObj.empty()这个方法没有说会不会从对象树中删除。
      

  15.   


    SIEve 监测发现内存一直在涨,但是没有发现内存泄露的问题
      

  16.   

    确认permgen等JVM的内存分配没问题么?