2011-05-27 42 views
0

我已经通过论坛寻找试图找到我的问题的决议,但找不到任何类似的东西。虽然我看到很多内存泄漏问题,但仍然无法找到一个特别的问题。我对jquery也很新。.net MVC和jQuery ajax刷新内存泄漏

因此,我有一个.net mvc页面查询数据库每3秒刷新一个div。我注意到它一直在吃掉内存,然后一旦碰到1GB内存就最终崩溃。我正在使用IE8。这里是页面:

<script type="text/javascript"> 
var refreshInterval = 3000; 
var refreshInSeconds = refreshInterval/1000; 

$(document).ready(
       function() { 
        $("#timerValue").text(refreshInSeconds.toString()); 
       }); 

$(function() { 
    setInterval(
      function() { 
       $.ajax({ 
        url: '<%:Url.Action("RefreshRunningSuites")%>', 
        context: document.body, 
        cache: false, 
        success: function (data) { 
         $("div#runningSuites").html(data); 
        } 
       }); 
      }, 
      refreshInterval); 
}); 

</script> 
<h2> 
    Currently Running Suites</h2> 
<br /> 

<div id="runningSuites"> 

<% Html.RenderPartial("RunningSuites", Model); %> 
</div> 
<div id="footer"> 

    Listing refreshes every <label id="timerValue"></label> seconds. 
</div> 

通过包含在通过视图模型对象列表中的RunningSuites用户控制回路,并呈现一个普通的HTML表的内部列表中的每个记录的新tablerow的

这里是ActionResult的RunningSuites

public ActionResult RefreshRunningSuites() 
{ 
    RunningSuitesViewModel viewModel = new RunningSuitesViewModel(RunManager.GetCurrentlyRunningSuites()); 
    return PartialView("RunningSuites", viewModel); 
} 

任何想法如何解决此内存泄漏?谢谢。

+0

我没有看到在该代码任何会导致内存泄漏。你可以显示RunningSuitesViewModel构造函数或RunManager.GetCurrentlyRunningSuites()方法中的任何内容吗? – AaronShockley 2011-05-27 15:19:19

回答

2

和你在这里报道,同样的情况: http://forum.jquery.com/topic/memory-leaks-with-ajax-calls

解决方法(如果您正在使用的版本< 1.5,它不是在1.5+清除 - 但你需要检查这些版本我不知道它是否固定)

先清空你的内容 (document.getElementById(“runningSuites”))。innerHTML =“”;

这个'可能'已经在jQuery 1.5中修复 - 如果不使用解决方法,请给它一个旋转。

据透露,以帮助DOM泄漏检查出这可能是获得更多的信息

http://www.smallworkarounds.net/2009/04/jquery-leaking-memory-be-careful-while.html \

+0

谢谢,似乎已修复它。哦,我正在使用JQuery 1.6.1,该错误仍然没有解决。 – user773237 2011-05-31 14:36:05

+0

很酷。如果有帮助,请在上面标记答案。 1.6.1仍然不固定?!?!?卫生署! – 2011-05-31 16:52:01