実際の問題は解決する必要があります:私は大規模なアプリケーションで作業しています。最初のリリースは約2年前です。アプリケーションに新しいページを追加し、奇妙な動作に気づいています。新しい画面は「常時オン」ステータス画面になります。つまり、アプリケーションのデフォルト画面であり、アプリケーションが実行される専用PCは常にデフォルトで表示されます。一定時間(IEのほんの数分、通常はChromeでもっと長い時間が経過した後)に、動作がうまくいきません。第1に、スクロールメッセージのアニメーション(もしあれば)が不安定で遅くなり、最終的に約1ピクセル/秒で動くように見える。私たちが使用しているマシンではIEで数分でチョップが始まり、数時間でクロールが遅くなります。その時までに、他の奇妙な行動が始まりました。ブラウザ自体は反応が遅くなります。この画面にはメニュー/ログインボタンがあり、クリックすると何かが起こるまでに3〜4秒の遅延があります。他のビジュアル要素は、ユーザーとのやり取りがないのに、更新する前に同様の遅延があります。再帰的ポーリングの方法でのJavaScriptのメモリリーク
私はこのページのすべてを見て、数日を過ごしました。は、データをポーリングするために使用するサービス内のメモリリークの原因を絞り込んでいると思います。サービスを使用している各ページに表示されますが、多数の視覚的手がかり(スクロール、アイコン/色の更新など)のために、この現象は新しい画面上の問題に過ぎないと考えています。データが更新されたときに毎サイクル実行される集中的な処理/グラフングを持ち、他のスクリーンを立ち上げて実行していない可能性が高いという事実は、ワーキングページ。
Chromeのデベロッパーツールでタイムラインのスクリーンショットを撮りました。これはそのようです。ポーリングサービスを使用している各ページでも同様です。
私はdemo of just the pollingを作成し、同様のグラフを得ました:。デモではそれほど重大ではないようですが、パターンは明らかに似ており、メモリリークのように見えます。 どのようにしてメモリリークを解決し、他の問題を解決できますか?
いくつかの関連するコード:
var reload = function() {
$http({
method: 'GET',
url: 'api.txt',
timeout: 5000
})
.success(function(response) {
//do stuff
})
.error(function(data) {
//do other stuff
})
.finally(function() {
timer = $timeout(reload, 1000);
});
};
実際の割り当て/割り当て解除を確認してください。*保持されている/漏れていることを伝える必要があります。 –
@ DanielA.Whiteどうすれば確認できますか?プロファイルタブを使用してスナップショットをチェック/比較しましたが、私が探しているものが正確ではありません。私は奇妙なことは何も見ていないが、私はこれまでのようなものを追跡することはなかった。何がそこにあるのか、何がないのかを私はどのように知っていますか? – senschen
https://developers.google.com/web/tools/chrome-devtools/memory-problems/ –