4

私はすでに丸一日検索しましたが、サーバーへの ajax-jsonp リクエストを大量に使用する phonegap アプリケーションでこのような大きなメモリ リークが発生する理由を見つけることができません。

したがって、私はそれを最も単純な例に分解しました。こちらの jsfiddle で見つけることができます。

その主な内容は次のとおりです。

function run(){
   $.ajax({
        dataType: 'jsonp',
        url: "http://thawing-bayou-7281.herokuapp.com/test.js",
        success: function (res) {
            // some stuff here
            setTimeout(run, 250);
        }
    });
};
run();

したがって、このコードは jsonp API リクエストを 250 ミリ秒ごとに無期限に呼び出します。

注意してください:これは決して実装しない例であることはわかっています! メモリリークを検出するためだけです。

この例を実行すると、使用メモリが急速に増加します (Chrome の [タイムライン] タブで最もよくわかります)。 DOM ノードここに画像の説明を入力 の数も急速に増加しています。ある時点で故障しますが (おそらく GC でしょうか?)、要素と必要なメモリが急速に増加します。

この問題を解決する方法を知っている人はいますか?

ありがとう!

4

1 に答える 1

4

これはメモリ リークではありません。java では鋸歯状のグラフが一般的です。メモリ使用量が増加し、ガベージ コレクタが呼び出されて低下します。あなたが示したグラフはまさにそのような状況を表しています。

グラフの最低点が継続的に増加し、グラフに表示されていない場合、メモリ リークが発生する可能性があります。

于 2013-08-07T15:33:03.263 に答える