1

我浏览了论坛试图找到解决我的问题的方法,但找不到类似的东西。虽然我看到很多内存泄漏问题,但仍然找不到一个特别适合我的问题。我对 jquery 也很陌生。

所以我有一个.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>

用户控件循环遍历传入的 viewmodel 对象中包含的RunningSuites列表,并为普通 html 表内的列表中的每个记录呈现一个新的 tablerow

这是 ActionResult RunningSuites

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

知道如何解决此内存泄漏吗?谢谢。

4

1 回答 1

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 \

于 2011-05-28T06:02:19.947 回答