0

重複の可能性:
jQuery メモリ リークの疑い

タブを開いたままにしておくと、ウェブサイトの速度がどんどん遅くなることに気付きました。Chrome のタスク マネージャーを使用して、問題を絞り込みました。

次のコード行が呼び出されるたびに、メモリ使用量が増加します。

$jquery.post(url, params);

このコードを 1 秒のタイマーで実装したところ、数分でメモリ使用量が 30MB から 250MB になりました。この 1 行のコードだけをコメントアウトすると、問題が解決します。この 1 行だけをコメントアウトしていることに注意してください。私はまだ URL とパラメーターを生成させます。したがって、問題は間違いなくこのコード行に関係しています。実行するたびに、約 2MB のメモリが消費されます。

明らかに何らかのメモリリークがあります。結果のキャッシングまたは JSON デシリアライゼーションと関係があると思います (JSON の結果はかなり大きくなる可能性があります)。

誰でも回避策や解決策を提供できますか? ガベージ コレクションを強制するだけでも問題ありません。FWIW、メモリ使用量は時折減少しますが、それほどではありません (ガベージ コレクション?)。300MB から 250MB に減少したのを見たばかりですが、現在は再び少しずつ増加しています。

より具体的には、コードは次のようになります...

...

    init: function()
    {
        setInterval(function(){ SManager.updateAll(); }, 1000);
    },

    updateAll: function() 
    {
        var url = SManager.SERVER_URL;
        var params = new Object();
        params.version = 1;
        params.platform = 'web';

        $jquery.post(url, params);
    },

ありがとう!

4

2 に答える 2

1

プロファイリング ツールを使用して、ガベージ コレクションされない大きなオブジェクトを見つけます。例: Chrome F12 / プロファイリング / ヒープ トレース。

于 2012-04-17T17:25:14.987 に答える
1

スタックオーバーフローのソリューションに関する同様の問題 あなたの解決策はproblemここにあると思います:

jQuery メモリ リークの疑い

于 2012-04-17T18:21:04.537 に答える