私はJavascriptを多用し、多くのDOM操作を含むプロジェクトを開発しています。コードが大きくなるにつれて、 Internet Explorerでのページの読み込み時にJavasriptの実行に遅延(約1〜2秒)が発生する場合があることに気付きました(9)。この遅延はFirefoxでは発生しませんでした。
例えば:
// the actual code contains much more stuff
$("body").append("<p>paragraph</p>");
はp
動的に生成されましたが、最新のブラウザでページが読み込まれた直後に表示されるはずです。p
しかし、IEでは、静的コンテンツがすべて読み込まれた後にが追加されていることがはっきりとわかることがあります。これにより、ページ全体がジャンプします。
IEを再起動すると、遅延はなくなりました。ただし、多くのDOM操作が行われた場合は、次のページの更新時に再度発生します。
memory leak
オブジェクト参照を無効にすることはめったにないので、これが原因であるかどうかを考えています。
var foo = $("#foo");
foo.on("click", function() {
var bar = '<div id="bar">bar</div>';
$("body").append(bar);
// nullify bar
bar = null;
});
// nullify foo
foo = null;
質問:
上記の例のように使用が完了したら、すべてのオブジェクト参照を無効にする必要がありますか?
Q1の答えが「いいえ」の場合、いつ、どのような条件でオブジェクト参照を無効にする必要がありますか?
無効化以外にメモリリークを防ぐために他に何ができますか?
PS:数年前に尋ねられた同様の質問をいくつか読んだことがありますが、それらは主にIE6/7用です。