Збирання сміття

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Збирання сміття (англ. garbage collection) — одна з форм автоматичного керування оперативною пам'яттю комп'ютера під час виконання програм. Підпрограма — «прибиральник сміття» — вивільняє пам'ять від об'єктів, які не будуть використовуватись програмою в подальшому[1]. Збирання сміття було винайдено Джоном Мак-Карті приблизно 1959 року для розробленої ним мови програмування Лісп[2].

Основний принцип, з яким працюють різні алгоритми збирання сміття, полягає в наступному:

  1. Визначити об'єкти, що не потрібні для подальшої роботи програми.
  2. Вивільнити ресурси, зайняті цими об'єктами.

Часто автоматичне збирання сміття протиставляють ручному керуванню пам'яттю, яке, на відміну від автоматичного, вимагає від розробника самому писати інструкції виділення пам'яті та її звільнення.

Вплив автоматичного збирання сміття на швидкодію[ред.ред. код]

Дослідження впливу автоматичного збирання сміття на швидкодію програм для мов програмування, розроблених для застосування лише разом із автоматичним збиранням сміття (таких як Java, OCaml, Python тощо), ускладнюється браком можливості вимірювати швидкодію програми із ручним керуванням пам'яттю. Однак, у дослідженні Метью Герца та Емері Берґера[3] порівняно швидкодію ручного керування пам'яттю та прибиральників сміття (як із копіюванням, так і без копіювання). Ці вимірювання довели, що найкращий за швидкодією прибиральник сміття може конкурувати за швидкодією із ручним керування пам'яттю, якщо йому надати досить багато пам'яті. Зокрема, із використанням вп'ятеро більшої пам'яті його швидкодія відповідає ручному варіанту. За наявності втричі більшої вільної пам'яті він працює в середньому на 17% повільніше за ручне керування пам'яттю. А з використанням вдвічі більшої пам'яті, швидкодія зменшується на 70%. В умовах браку фізичної пам'яті використання своп-пам'яті уповільнює швидкодію прибиральника сміття на порядки у порівнянні з ручним керуванням.

Виноски[ред.ред. код]

Дивіться також[ред.ред. код]

  • Лісп — перша мова програмування з автоматичним збиранням сміття.
  • Simula та Smalltalk — перші об'єктно-орієнтовані мови програмування також мали автоматичне збирання сміття.
  • Java, C# — одні із популярних мов програмування з автоматичним збиранням сміття.


Комп'ютер Це незавершена стаття про комп'ютери.
Ви можете допомогти проекту, виправивши або дописавши її.