JavaScript, циклические ссылки и утечки памяти

Из того, что я вспоминаю не слишком удаленного прошлого, интерпретаторы JavaScript, перенесенные, из памяти пропуская проблемы, когда сталкивающийся с циклическими ссылками.

Это все еще имеет место в последних браузерах? (например, Chrome, FF 3.5 и т.д.)

24
задан jldupont 4 January 2010 в 14:29
поделиться

2 ответа

Подавляющее большинство утечек, о которых мы говорим с JavaScript, происходит именно в IE6-7, когда вы делаете цикл ссылок между объектами JavaScript и хост-объектами, такими как DOM узлы.

В IE6 это особенно вредно в том, что вы не получаете обратно память, когда покидаете страницу; она исчезает, пока вы не выйдете из браузера. В IE7 очистка страницы теперь возвращает память, но вы все еще можете испытывать трудности, когда у вас есть долго работающее приложение. IE8 решает большую часть этой проблемы правильно, превращая DOM-узлы в "родные" JavaScript-объекты, а не в хост-объекты. (Вы все еще можете вызвать утечки в IE8, включив в цикл ссылок другие неродные объекты, такие как ActiveX)

Для всех браузеров, особенно в старых версиях, все еще будут небольшие непонятные утечки памяти, скрывающиеся в случайных местах. Но нет ни одного способа легко классифицировать и избежать их, как в случае с IE refloop

.
28
ответ дан 28 November 2019 в 23:21
поделиться

Относительно Internet Explorer 8 - говорят, что исправили его в MS IE8: http://msdn.microsoft.com/en-us/library/dd361842(VS.85).aspx

Похожий поток здесь на StackOverflow: Знаете ли вы, что может привести к утечке памяти в JavaScript?

2
ответ дан 28 November 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: