#javascript
#javascript
Вопрос:
Я не очень хорошо знаком с внутренностями JavaScript и сборкой мусора. Я хочу избегать циклических ссылок, которые могут создавать проблемы с памятью при использовании MutationObserver, и я знаю, что при неправильных предположениях о GC я мог бы заставить MutationObserver содержать ссылку на элемент, который не позволил бы элементу получить GC’d.
Когда элемент удаляется со страницы, на экземпляр MutationObserver больше не ссылаются, но он все еще наблюдает за удаленным элементом, останется ли он в памяти и продолжит ли наблюдать за элементом?
Может быть, это вопрос к конкретной реализации браузера? Я не хочу ненужного / защитного кода, но мне бы не хотелось, чтобы таким образом произошла незначительная утечка памяти.
Ответ №1:
Нет, он не останется в памяти. Все, на что не ссылаются из window
(глобальной области видимости) вниз, пригодно для сборки мусора, циклические ссылки в любой форме не являются проблемой. Собирает ли его движок и когда зависит от движка.