История изменений
Исправление wandrien, (текущая версия) :
Языки с рефкаунтерами вместо нормального GC, считаются ущербными, они еще и тормозят обычно. Если правильно помню, то до рефкаунтеров даже самый первый GC в мире не опускался.
Подсчёт ссылок это подсчёт ссылок, а сборка мусора это сборка мусора. Два совершенно разных подхода с разными свойствами. В языки с автоматическим управлением памятью просто нет смысла пихать подсчёт ссылок, а надо сразу делать сборку мусора.
Недостатки подсчёта ссылок:
- Замедление размазано по всей программе, поскольку каждое создание, присваивание и разрушение указателя должно сопровождаться атомарной операцией на счётчике ссылок и условным бранчем.
- Алгоритм не способен освобождать циклические ссылки. Циклический граф ссылок никогда не будет освобождён.
Преимущества посчёта ссылок:
- Код не имеет внезапных пауз и исполняется с предсказуемоей производительностью. Это может быть существенно важно в реал-тайм задачах.
- Лёгкость реализации и лёгкость интеграции с существующим кодом, фреймфорками, библиотеками.
Недостатки сборки мусора:
- Код может останавливаться в непредсказуемые моменты на непредсказуемое время. (Разные подходы к сборке мусора пытаются адресовать эту проблему, но она по своей природе фундаментальна, её можно сгладить, но не устранить.)
- Интеграция с существующими кодовыми базами может быть трудоёмкой.
Преимущества сборки мусора:
- Создание, присваивание и разрушение указателей выполняются с той же скоростью, что на сырых указателях. Нет накладных расходов на это.
- Нет проблемы с циклическими ссылками.
Исправление wandrien, :
Языки с рефкаунтерами вместо нормального GC, считаются ущербными, они еще и тормозят обычно. Если правильно помню, то до рефкаунтеров даже самый первый GC в мире не опускался.
Подсчёт ссылок это подсчёт ссылок, а сборка мусора это сборка мусора. Два совершенно разных подхода с разными свойствами. В языки с автоматическим управлением памятью просто нет смысла пихать подсчёт ссылок, а надо сразу делать сборку мусора.
Недостатки подсчёта ссылок:
- Замедление размазано по всей программе, поскольку каждое создание, присваивание и разрушение указателя должно сопровождаться атомарной операцией на счётчике ссылок.
- Алгоритм не способен освобождать циклические ссылки. Циклический граф ссылок никогда не будет освобождён.
Преимущества посчёта ссылок:
- Код не имеет внезапных пауз и исполняется с предсказуемоей производительностью. Это может быть существенно важно в реал-тайм задачах.
- Лёгкость реализации и лёгкость интеграции с существующим кодом, фреймфорками, библиотеками.
Недостатки сборки мусора:
- Код может останавливаться в непредсказуемые моменты на непредсказуемое время. (Разные подходы к сборке мусора пытаются адресовать эту проблему, но она по своей природе фундаментальна, её можно сгладить, но не устранить.)
- Интеграция с существующими кодовыми базами может быть трудоёмкой.
Преимущества сборки мусора:
- Создание, присваивание и разрушение указателей выполняются с той же скоростью, что на сырых указателях. Нет накладных расходов на это.
- Нет проблемы с циклическими ссылками.
Исходная версия wandrien, :
Языки с рефкаунтерами вместо нормального GC, считаются ущербными, они еще и тормозят обычно. Если правильно помню, то до рефкаунтеров даже самый первый GC в мире не опускался.
Подсчёт ссылок это подсчёт ссылок, а сборка мусора это сборка мусора. Два совершенно разных подхода с разными свойствами. В языки с автоматической управлению памятью просто нет смысла пихать подсчёт ссылок, а сразу делать сборку мусора.
Недостатки подсчёта ссылок:
- Замедление размазано по всей программе, поскольку каждое создание, присваивание и разрушение указателя должно сопровождаться атомарной операцией на счётчике ссылок.
- Алгоритм не способен освобождать циклические ссылки. Циклический граф ссылок никогда не будет освобождён.
Преимущества посчёта ссылок:
- Код не имеет внезапных пауз и исполняется с предсказуемоей производительностью. Это может быть существенно важно в реал-тайм задачах.
- Лёгкость реализации и лёгкость интеграции с существующим кодом, фреймфорками, библиотеками.
Недостатки сборки мусора:
- Код может останавливаться в непредсказуемые моменты на непредсказуемое время. (Разные подходы к сборке мусора пытаются адресовать эту проблему, но она по своей природе фундаментальна, её можно сгладить, но не устранить.)
- Интеграция с существующими кодовыми базами может быть трудоёмкой.
Преимущества сборки мусора:
- Создание, присваивание и разрушение указателей выполняются с той же скоростью, что на сырых указателях. Нет накладных расходов на это.
- Нет проблемы с циклическими ссылками.