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>

ユーザーコントロールはRunningSuites、渡されたviewmodelオブジェクトに含まれるリストをループし、通常のhtmlテーブル内のリスト内の各レコードの新しいテーブル行をレンダリングします。

これがActionResultRunningSuitesです

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 = "";

この「可能性」はjQuery1.5で修正されています。回避策を使用しない場合は、回転させてください。

DOMリークを支援するFyiは、これをチェックして、より多くの情報を入手する可能性があります

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

于 2011-05-28T06:02:19.947 に答える