Мне не совсем понятно как осуществляется сборка мусора в том же Хром.
Возникают вопросы: Сейчас в основном все современные браузеры поддерживает алгоритм Mark-and-sweep? Только IE работает по принципу подсчета ссылок?
Если на все эти вопросы ответы да, то мне не совсем понятно как работает сам алгоритм Mark-and-sweep. Получается, что этот алгоритм фактически работает только с ссылками? Глобальные переменные, функции он вообще не очищает?
Егор Живагин, я гуглил, читал. Просто чем больше читаю, тем больше запутываюсь в этой куче информации. Мне нужно больше вообщем, чем затягиваться во все тонкости. Но хорошо, почитаю, правда не понимаю что такое этот Orinoco еще:)))
Егор Живагин, ознакомился, почитал еще дополнительной инфы на сторонних ресурсах.
Получается, что сейчас все современные браузеры с 2012 года (так пишется на MDN по крайней мере) работают по алгоритму Mark-and-sweep: MDN
Начиная с 2012 года, все современные веб-браузеры оснащаются сборщиками мусора, работающими исключительно по принципу mark-and-sweep ("пометь и выброси"). Все усовершенствования в области сборки мусора в интерпретаторах JavaScript (генеалогическая/инкрементальная/конкурентная/параллельная сборка мусора) за последние несколько лет представляют собой усовершенствования данного алгоритма, но не новые алгоритмы сборки мусора, поскольку дальнейшее сужение понятия "объект более не нужен" не представляется возможным.
...старые (типа IE) - по принципу подсчета ссылок: MDN
Браузеры Internet Explorer версий 6, 7 имеют сборщик мусора для DOM-объектов, работающий по принципу подсчёта ссылок. Поэтому данные браузеры можно легко принудить к порождению систематических утечек памяти (memory leaks).
Отличие, как я понимаю, только в том, что каждый браузер может использовать разные оптимизации сборки мусора (Generational collection, Incremental collection...). В этом как бы и отличие. Правильно?