この質問は以前に尋ねられたことは知っていますが、私はjavascript経由でDOMの要素を更新するAJAX Webページをテストしています。JavaScriptを使用してDOMを更新するとメモリリークが発生する(Firefoxのみ)
毎分、サーバーに新しいデータが問い合わせられ、それに従ってDOMが更新されます。私が知る限り、Chromeのこのページのメモリ使用量は増えますが、それほど多くはありません(約40 MBから始まり、おそらく最大80 MBに達する)。ただし、Firefoxではメモリ使用量が120 MB前後から400 MB以上に拡大されます。私はFirebugを使ってJavascriptを踏んできました.JavascriptメソッドでDOMが更新されたときに、メモリが最も大きくなるようです。
var myTable = document.createElement("table");
var thead = document.createElement("thead");
var tr = document.createElement("tr");
var th = document.createElement("th");
th.appendChild(document.createTextNode("column1"));
tr.appendChild(th);
for(var test in obj.testObjs){
th = document.createElement("th");
th.appendChild(document.createTextNode(obj.testObjs[test].myVar));
tr.appendChild(th);
}
DOM内のノードに新しいデータを追加する前に、私が最初に既存のデータをクリア:
DOM操作は、次のような、シンプルです。私はここに記載されたものを含めて、いくつかの方法を、試してみた:How to remove DOM elements without memory leaks?
としてだけでなく、のような簡単な方法:私も読んだ
function clearChildren(node){
if(node != null){
while (node.hasChildNodes()) node.removeChild(node.firstChild);
}
}
(Cyclic adding/removing of DOM nodes causes memory leaks in JavaScript?)ブラウザのみごみの収集を開始することをそれは一定のレベルに達したら?それは確認できますか?メモリが増えているので、しばらくして私のPCが低速で動作しているように感じます。
同じ機能的なステップを実行した商用サイトではメモリ使用量が増えることはないため、これに対する解決策が必要だと感じました。
ご協力いただければ幸いです。
ありがとうございます。
応答ありがとう - MootoolsはJQueryに干渉しますか?私は自分のサイトでJQueryを使用していましたが、Mootools destroy()関数を使用しようとするとJSエラーが発生しました。 "destroy()は関数ではありません" – user172092
一緒に再生するには、彼らはうまくやっている私のサイト)。同様に、Mootools依存コードで '$'を使う代わりに、 'document.id( 'セレクタ...)を使う必要があります。') ' –
ありがとうございます - メモリ使用量が絶え間なく増えているようですが、時々縮小しているようです。私はあなたの助けに感謝します。 – user172092