Если компилятор статически вставляет, сохраняет и освобождает, тогда больше не требуется никакого компонента времени выполнения для сборки мусора или что?
ARC означает «Автоматический подсчет ссылок» и, следовательно, прибегает к подсчету ссылок (RC) в целом. RC является одной из самых старых форм сбора мусора, начиная с 1960 года, и редко используется на практике, потому что он очень медленный, имеет неограниченные паузы и неточен, потому что он пропускает циклы.
RC медленный, потому что счетчики ссылок увеличиваются и уменьшаются каждый раз, когда вы обрабатываете ссылку на объект (например, считываете ссылку из кучи или записываете ее в кучу), а подсчет ссылок, ориентированный на поток, должен корректировать счет с использованием атомарного приращения и уменьшения операции. Наивный подсчет ссылок (например, shared_ptr
в C ++) примерно в 10 раз медленнее, чем отслеживание сборки мусора. ARC использует статический анализ для удаления некоторых из этих приращений и уменьшений счетчиков, которые улучшат производительность, но я не знаю каких-либо критериев и серьезно сомневаюсь, что результат конкурентоспособен по сравнению, например, с JVM или CLR (оба из которых исключены подсчет ссылок давным-давно, потому что они обнаружили, что отслеживание сбора мусора намного быстрее и точнее)