Какие алгоритмы сборки "мусора" все 5 главных браузеров используют?

Я в настоящее время заново обдумал, объект располагают обработку qooxdoo платформы JavaScript.
Взгляните на следующую схему (A, в настоящее время находится в объеме):

схема http://yuml.me/51747906.jpg

Скажем, мы хотим удалить B. Обычно мы сокращаем всю ссылку между всеми объектами. Это означает, что мы сокращаем соединение 1 - 5 в примере. Это действительно необходимо?
Насколько я читал здесь, браузеры используют алгоритм метки-и-развертки. В этом случае мы просто должны сократить ссылку 1 (соединение с объемом) и 5 (соединение с DOM), который мог быть намного быстрее.
Но я могу быть уверен, что все браузеры используют алгоритм метки-и-развертки или что-то подобное?

11
задан Community 23 May 2017 в 12:01
поделиться

2 ответа

Для любого приличного сборщика мусора (не только отметки и очистки) обрезания соединения 1 будет достаточно, чтобы освободить B (а также C и D и окно ). Распределение, основанное на подсчете ссылок, не сможет освободить B и D из-за их циклических ссылок (B ссылается на D и D ссылается на B), но подсчет ссылок на самом деле не является сборкой мусора.

Я думаю, можно с уверенностью предположить, что все браузеры используют приличный сборщик мусора (ну, с браузерами ничто не бывает по-настоящему безопасным, но реализация JavaScript, не использующая надлежащий сборщик мусора, тем не менее маловероятна).

2
ответ дан 3 December 2019 в 11:51
поделиться

Дело в том, что в идеальном мире вам в основном нужно просто отключить узлы DOM и собственные слушатели событий. Проблема в том, что оригинальная система в qooxdoo была разработана для таких глючных браузеров, как IE6. Мы увидели значительное сокращение использования памяти, когда удалили как можно больше самостоятельно. Однако в современном мире я бы переделал систему таким образом, чтобы она нормально работала в IE6, но не была оптимизирована для его проблем.

Существует также разница между полным выключением всего приложения (dispose all) и просто удалением отдельной части приложения. В последнем случае вам нужно действовать довольно осторожно, чтобы не удалить то, что еще нужно.

2
ответ дан 3 December 2019 в 11:51
поделиться
Другие вопросы по тегам:

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