Ajax内存泄漏


                    

结合使用ASP.NET AJAX和jQuery,我在IE和Firefox中都遇到了缓慢的内存泄漏。 我的情况与此处描述的情况非常相似:防止AJAX内存泄漏,除了使用jquery和asp外 .net AJAX,不是原型:我有一个网页显示一个UpdatePanel中的数据,该数据使用计时器每60秒刷新一次。 在每次“部分回发”调用的AJAX javascript pageLoad函数中,我重新绑定了事件,因为它们在asp.net部分回发中丢失了:</ p>

 函数pageLoad(sender,args){
     $(“#item”)。unbind();
     $(“#item”)。hover(
         function(){
             // 做一点事
         },
         function(){
             // 做一点事
         });
}
</ code> </ pre>

因此每60秒调用一次。 难道这仅仅是导致内存泄漏的原因吗? </ p>
     </ div>

展开原文

原文

I am experiencing a slow memory leak in both IE and Firefox using a combination of ASP.NET AJAX and jQuery. My scenario is very similar to the one described here : Preventing AJAX memory leaks except using jquery and asp.net AJAX, not protyotype: I have a webpage displaying data in an UpdatePanel that is refreshed every 60 seconds using a timer. in the AJAX javascript pageLoad function that is called on every "partial postback", I re-bind events because they are lost in the asp.net partial postback:

function pageLoad(sender, args) {
    $("#item").unbind();
    $("#item").hover(
        function() {
            // do something
        },
        function() {
            // do something
        });
}

so this is called every 60 seconds. Could this alone be the cause of a memory leak?

2个回答


改为执行此操作:</ p>

  $(function(){//。准备好快捷方式...
   $(“#item”)。live(“ hover”,
     function(){
         // 做一点事
     },
     function(){
         // 做一点事
     });
  });
</ code> </ pre>

请注意,此需要jQuery 1.4.1 ,但是在内存方面却完全不同。 它附加到整个DOM监视事件 冒泡,而不是每60秒将新事件附加到您要插入的每个对象上。</ p>
     </ div>

展开原文

原文

Do this instead:

$(function() { //.ready shortcut...
  $("#item").live("hover",
    function() {
        // do something
    },
    function() {
        // do something
    });
 });

Note, this requires jQuery 1.4.1, but acts entirely different in terms of memory. It attaches to the entire DOM watching for the event to bubble instead of attaching a new event to every object your're inserting every 60 seconds.


是的,可能是</ p>

首先尝试的是采用在那里定义的两个函数(如果可能的话),并将它们放在更高的级别,以便它们仅被定义一次。</ p>
     </ div>

展开原文

原文

Yes, it could be.

The first thing to try would be to take the two functions defined there (if possible) and place them in a higher level so that they are only defined once.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐