43

私は「ああ、スナップ!」を得ています。特定の Web ページが読み込まれているときに chrome がクラッシュする。何が原因なのかを突き止めるために最善を尽くしていますが、本当に苦労しています。

Chrome 開発者ツールには [メモリ] タブがあり、カウンター グラフを見ると、DOM ノード カウントの線が増加し、減少し、その後増加し続けていることがわかります。

DOM ノード数の増加

これは、ページの DOM 要素数が増加していることを意味すると理解しましたが、実行した後

document.getElementsByTagName("*").length

コンソールで、値が変化していないことに気付きました。

では、DOM ノード数グラフは実際に何を示しているのでしょうか? このまま増え続けると、「あっ、パチン!」の原因になりかねません。クラッシュ?

4

2 に答える 2

36

DOM ノード数グラフは、まだメモリに保持されている、つまりまだガベージ コレクションされていない、作成された DOM ノードの数を示します。これは、通過する要素と一致する必要はありませんgetElementsByTagName。後者は、ドキュメント ツリーに実際にアタッチされている要素のみを取得します。まだ参照している「オフライン」アイテムは取得されません。

この特定のピラミッドの成長に行き詰まる簡単な方法は、Facebook API の Like ウィジェットです。これには、大量の追加 DOM ノードを作成するランナウェイ タイマーに関するコードが含まれています。

于 2012-06-18T13:25:58.550 に答える