次の HTML ページを検討してください。
http://jsbin.com/aYUcelo/1/ (すべての jsbin ノイズを取り除くためにダウンロードすることをお勧めします)。
GO ボタンをクリックすると、ボディに div が追加されます。RM は div の 1 つを削除します。また、次の 2 つのスタイルのいずれかを新しい div に適用します。
newDiv.style.color = "red";
// or
newDiv.style.WebkitTransform = "translate3d(0px, 0px, 0px)";
WebkitTransform が適用されている場合、Chrome 開発ツールのメモリ タイムラインでノード数が増え続けていることがわかります。GC は削除できません。これは、カラー レッド スタイルでは発生しません。
編集:「赤いスタイル」を適用することを明確にするために、divを追加および削除する操作はノード数と同等です。
この動作の理由は何ですか? 私は要点を逃していますか?DOMノードリークすらありませんか?
ここでは、2 つのタイムライン レコードを見つけることが できます 。
両方のレコードで、3 つの div が連続して追加および削除され、最後に GC が要求されます。参考までに、私はより複雑なAngularアプリを持っていますが、同じ問題のメモリリークを突き止めることができます. とにかく、この簡単な例を作成しました。
編集: タイムライン レコードの 2 つの画像: https://docs.google.com/file/d/0B9S6doraVaWXMURzMjdhMWI0UDA https://docs.google.com/file/d/0B9S6doraVaWXWGhwVWhlMjN4dkE
編集 2: Windows 8 / Chrome 30.0.1599.69 m の実行