2012-04-17 14 views
0

可能性の重複を漏らす原因:
jQuery Memory Leak Suspicion

私は、私たちのウェブサイトは、タブが開いて滞在長い遅く、遅くなった気づきました。たびに、次のコード行は、メモリ使用量が増加と呼ばれている

:Chromeのタスクマネージャを使用して、私は問題を絞り込ん

$jquery.post(url, params); 

私は1secondタイマーにこのコードを実装し、数分でメモリ使用量は30MBから250MBに増加しました。この1行のコードをコメントアウトするだけで問題は解決されます。私はこの1行だけをコメントアウトしています。私はまだURLとparamsを生成させます。したがって、問題はこのコード行では間違いありません。それが実行されるたびに、約2MBのメモリが消費されます。

明らかに、ある種のmemleakがあります。キャッシュや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); 
    }, 

感謝を探します!

答えて

1

ガベージコレクションされない大きなオブジェクトを見つけるには、プロファイリングツールを使用します。例えば。 Chrome F12 /プロファイリング/ヒープトレース。私はあなたのproblemへのソリューションがここに見つけることができると信じてstackoverflowの の溶液で

+0

はさて、私は、ヒープのスナップショットを取るためにクロームのプロファイル]タブを使用していました。スナップショットによると、ヒープサイズは、タスクマネージャのメモリ使用量が100 MBを超えていても、〜= 5 MBにすぎません。私は現在、メモリがページによって消費されるが、ヒープでは消費されない方法を理解していないので、2つの間の関係を理解するためにいくつかのドキュメントを掘り下げようとするつもりです... –

+0

あなたの接続が正しく終わらない?ネットタブで確認したり、いくつかのリクエストの後にWebサーバーをシャットダウンしたりして、メモリが解放されているかどうかを確認することができます。 – Tgr

+0

また、URLが毎回同じでない場合(URLパラメータが同じ場合でもjQueryによってキャッシュ中断パラメータがURLに追加される可能性があることに注意してください)、ブラウザ側で何らかのキャッシュが行われている可能性がありますPOSTリクエストでは珍しいでしょう)。 – Tgr