5

私の JavaScript は非常に単純です。データをダウンロードして画面に表示するためにajaxを呼び出し続けるだけです。これらの DOM 要素を再利用するには、データを直接更新します (jquery の $(DIV).empty() 関数を使用してから、別のコンテンツに appendTo を使用します)。ただし、一晩実行した後、コンピューターがハングし、何かを続けているようです。

いくつかのFirefoxアドオンによるメモリ消費を監視しようとしています。2時間実行すると、メモリが 200MB 増加する可能性がありますが、それが私のjsによるものなのか、他の理由によるものなのかはわかりません。

この問題についていくつか質問があります。1.それを監視する良い方法はありますか(特定のWebページで使用されているメモリの量、占有されているCPUリソースの量、およびその方法など) 2.回避するようにjs Webアプリを設計する一般的な方法はありますかそんな問題?

ありがとう、どんなコメントでも大歓迎です!

4

3 に答える 3

3

Firefox の特定のバージョンは、ガベージ コレクション戦略として参照カウントを使用します。参照カウントは、特定の状況下でメモリ リークを引き起こす傾向があります。

Internet Explorer と Mozilla Firefox は、JavaScript のメモリ リークに最もよく関連する 2 つの Web ブラウザです。両方のブラウザーの原因は、DOM オブジェクトの管理に使用されるコンポーネント オブジェクト モデルです。ネイティブの Windows COM と Mozilla の XPCOM はどちらも、メモリの割り当てと取得に参照カウント ガベージ コレクションを使用します。参照カウントは、JavaScript で使用されるマーク アンド スイープ ガベージ コレクションと常に互換性があるとは限りません。この記事では、JavaScript コードでのメモリ リークを回避する方法に焦点を当てます。Firefox および IE での COM 層のメモリー処理について詳しくは、「参考文献」を参照してください。

http://www.ibm.com/developerworks/web/library/wa-memleak/から

于 2012-07-03T01:49:32.970 に答える
2

jQuery では、ajax 呼び出しが行われるたびに、リクエストとその後の処理 (コールバック、ステータス チェックなど) を管理するために jqXHR が作成されるため、メモリ消費量が増えると思います。これらが自動的にクリアされるjQueryドキュメントには何も表示されません。だから、あなたのJavaScriptはそれらを積み上げているだけです。

http://api.jquery.com/jQuery.ajax/

于 2012-07-03T01:49:33.073 に答える
0

Chrome のタイムライン機能を使用して、メモリ使用量を経時的に追跡できます。これは、組み込みの開発者ツールの一部です。Firebug または別の FF プラグインが同じ機能を提供すると確信しています。

于 2012-07-03T01:24:44.507 に答える