LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Языки с рефкаунтерами вместо нормального GC, считаются ущербными, они еще и тормозят обычно. Если правильно помню, то до рефкаунтеров даже самый первый GC в мире не опускался.

Подсчёт ссылок это подсчёт ссылок, а сборка мусора это сборка мусора. Два совершенно разных подхода с разными свойствами. В языки с автоматическим управлением памятью просто нет смысла пихать подсчёт ссылок, а надо сразу делать сборку мусора.

Недостатки подсчёта ссылок:

  • Замедление размазано по всей программе, поскольку каждое создание, присваивание и разрушение указателя должно сопровождаться атомарной операцией на счётчике ссылок и условным бранчем.
  • Алгоритм не способен освобождать циклические ссылки. Циклический граф ссылок никогда не будет освобождён.

Преимущества посчёта ссылок:

  • Код не имеет внезапных пауз и исполняется с предсказуемоей производительностью. Это может быть существенно важно в реал-тайм задачах.
  • Лёгкость реализации и лёгкость интеграции с существующим кодом, фреймфорками, библиотеками.

Недостатки сборки мусора:

  • Код может останавливаться в непредсказуемые моменты на непредсказуемое время. (Разные подходы к сборке мусора пытаются адресовать эту проблему, но она по своей природе фундаментальна, её можно сгладить, но не устранить.)
  • Интеграция с существующими кодовыми базами может быть трудоёмкой.

Преимущества сборки мусора:

  • Создание, присваивание и разрушение указателей выполняются с той же скоростью, что на сырых указателях. Нет накладных расходов на это.
  • Нет проблемы с циклическими ссылками.

Исправление wandrien, :

Языки с рефкаунтерами вместо нормального GC, считаются ущербными, они еще и тормозят обычно. Если правильно помню, то до рефкаунтеров даже самый первый GC в мире не опускался.

Подсчёт ссылок это подсчёт ссылок, а сборка мусора это сборка мусора. Два совершенно разных подхода с разными свойствами. В языки с автоматическим управлением памятью просто нет смысла пихать подсчёт ссылок, а надо сразу делать сборку мусора.

Недостатки подсчёта ссылок:

  • Замедление размазано по всей программе, поскольку каждое создание, присваивание и разрушение указателя должно сопровождаться атомарной операцией на счётчике ссылок.
  • Алгоритм не способен освобождать циклические ссылки. Циклический граф ссылок никогда не будет освобождён.

Преимущества посчёта ссылок:

  • Код не имеет внезапных пауз и исполняется с предсказуемоей производительностью. Это может быть существенно важно в реал-тайм задачах.
  • Лёгкость реализации и лёгкость интеграции с существующим кодом, фреймфорками, библиотеками.

Недостатки сборки мусора:

  • Код может останавливаться в непредсказуемые моменты на непредсказуемое время. (Разные подходы к сборке мусора пытаются адресовать эту проблему, но она по своей природе фундаментальна, её можно сгладить, но не устранить.)
  • Интеграция с существующими кодовыми базами может быть трудоёмкой.

Преимущества сборки мусора:

  • Создание, присваивание и разрушение указателей выполняются с той же скоростью, что на сырых указателях. Нет накладных расходов на это.
  • Нет проблемы с циклическими ссылками.

Исходная версия wandrien, :

Языки с рефкаунтерами вместо нормального GC, считаются ущербными, они еще и тормозят обычно. Если правильно помню, то до рефкаунтеров даже самый первый GC в мире не опускался.

Подсчёт ссылок это подсчёт ссылок, а сборка мусора это сборка мусора. Два совершенно разных подхода с разными свойствами. В языки с автоматической управлению памятью просто нет смысла пихать подсчёт ссылок, а сразу делать сборку мусора.

Недостатки подсчёта ссылок:

  • Замедление размазано по всей программе, поскольку каждое создание, присваивание и разрушение указателя должно сопровождаться атомарной операцией на счётчике ссылок.
  • Алгоритм не способен освобождать циклические ссылки. Циклический граф ссылок никогда не будет освобождён.

Преимущества посчёта ссылок:

  • Код не имеет внезапных пауз и исполняется с предсказуемоей производительностью. Это может быть существенно важно в реал-тайм задачах.
  • Лёгкость реализации и лёгкость интеграции с существующим кодом, фреймфорками, библиотеками.

Недостатки сборки мусора:

  • Код может останавливаться в непредсказуемые моменты на непредсказуемое время. (Разные подходы к сборке мусора пытаются адресовать эту проблему, но она по своей природе фундаментальна, её можно сгладить, но не устранить.)
  • Интеграция с существующими кодовыми базами может быть трудоёмкой.

Преимущества сборки мусора:

  • Создание, присваивание и разрушение указателей выполняются с той же скоростью, что на сырых указателях. Нет накладных расходов на это.
  • Нет проблемы с циклическими ссылками.