Подсчёт ссылок: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Addbot (обсуждение | вклад)
м Перемещение 9 интервики на Викиданные, d:q1352761
Строка 9:
 
== Достоинства и недостатки ==
Главное '''достоинство''' подсчета ссылок перед [[сборка мусора#Отслеживающие сборщики мусора|отслеживающими сборщиками мусора]] в том, что объекты удаляются ''сразу'' как только на них нельзя сослаться, и в инкрементальной манере, без долгих пауз для циклов сборки и с ясно определенным временем жизни каждого объекта. В приложениях реального времени или в системах с ограниченной памятью это очень важно для поддержания малого времени отклика. Подсчет ссылок также является одним из ''простейших'' способов реализации сборки мусора. Он также обеспечивает эффективное управление не только памятью, но и другими видами ресурсов, например объектами операционной системы, которые часто гораздо малочисленнейдефицитней, чем память (системы с отслеживающей сборкой мусора используют для этого [[:en:Finalizer|финализаторы]], но тем не менее отложенная очистка может вызвать проблемы). [[Подсчёт ссылок#Взвешенный подсчет ссылок|Взвешенные счетчики ссылок]] является хорошим решением для сборки мусора в распределенных системах.
 
Счетчики ссылок также полезны в качестве входной информации для различных оптимизаторов времени исполнения. Например системы сильно зависимые от [[Неизменяемый объект|неизменяемых объектов]](многие [[Функциональное программирование|функциональные языки]]) могут проигрывать в производительности из-за частых операций копирования. Однако, если мы знаем что какой-то объект имеет только одну ссылку (Это верно для большинства разных систем), и эта ссылка потеряна а в то же время создан похожий новый объект (как в выражении по прибавлению строки <code>str ← str + "a"</code>), мы можем заменить эту операцию модификацией (''mutation'') исходного объекта.