4

jQueryメモリリークの問題を抱えたのは私が初めてではありませんが、私が見たこの質問に似た多くの質問を探していたので、答えを見つけることができませんでした.

まず、漏れやすいビット:

$(document).ready(function ivr_grabber(){
var xhr = $.ajax({
    url: '/ivr/inprogress',
    timeout: 3000,

    success: function(data){
        $('#open-ivrs').html(data);
        data = null;
    },
    complete: function(){
        setTimeout(ivr_grabber, 3000);
    }
});
xhr = null;
});

PHP コードは、PBX によって呼び出されている何人かの人々を含むテーブルを返します。.html(data) 行をコメントアウトしましたが、違いはありません。setTimeout も削除してから元に戻しましたが、うまくいきません。このリークが発生している可能性のあるすべての値の設定を解除しようとしましたが、どこから来ているのかわかりません。

ajax 呼び出しごとに約 5 KB の割合でリークしているようです。何かご意見は?

クロムでjQuery 1.7.2を使用する

私はヒープのスナップショットを一貫して取っていますが、上記のどれもリークに影響を与えていません

4

2 に答える 2

0

これについて100%確信はありませんが、document.readyハンドラーのスコープ外で関数ivr_grabberを宣言してみてください。また、なぜjqXHRオブジェクトをnullに設定するのですか?これは私の知る限り何も達成せず、おそらく非同期リクエストを妨害します。

$(document).ready(ivr_grabber);
function ivr_grabber() {}
于 2013-02-22T20:20:01.473 に答える