0

要素がデタッチされたとき、つまりPolymer 2.+のdisconnected()メソッドが、ポリマー1+のdetached()メソッドまたはポリマー2+のdisconnectedCallback()メソッドを実行すると、その要素とその子への参照はすべて削除され、メモリリークはその要素にもはや関連付けられますか?メモリリークがないことを確認するために、ポリマー要素detached()(2. +のdisconnectedCallback())を監視できますか?

答えて

0

いいえ、detached/disconnectedCallbackは、要素が文書から削除されたときに呼び出されますが、要素への参照がないことを示していません。

たとえば、ポリマー要素は、そのプロパティの1つへの参照を保持するコールバックでsetInterval()を呼び出すことができます。ドキュメントからその要素を削除すると(たとえば、Node.removeChild()を介して)、タイマーは自動的に停止されないため、要素がドキュメント内に存在しなくなった後でもメモリ内に残る可能性があります。これを避けるにはclearInterval()を呼び出す必要があります。

はまた、JavaScriptが現在、ガベージコレクションのセマンティクスを持っていません注意してください。 [1]

+0

すばらしい説明ありがとう。 Polymer要素でメモリリークを見つける方法や、Polymerを使用してアプローチする方法は何も変わらず、純粋なJavaScriptと考えるべきでしょうか?あなたが入力を持っているかどうかを尋ねるだけです。 – TheeBen

+1

問題はありません:)ポリマー要素のメモリリークについて:実際にはどのようなタイプのJSメモリリークもPolymerで可能なので、これは広範な話題です:https:// auth0を回避し、トラブルシューティングする方法については、 com/blog/four-types-of-leaks-in-your-javascriptのコードと方法を取り除く方法/ – tony19

関連する問題