Прибирання сміття
Матеріал з Вікіпедії — вільної енциклопедії.
В програмуванні, прибиранням сміття (англ. garbage collection) називають одну із форм автоматичного керування пам'ятю. Прибиральник сміття відповідає за звільнення пам'яті від об'єктів, які не будуть використовуватись програмою в подальшому. Прибирання сміття було винайдено Джоном Мак-Карті приблизно в 1959 році для розробленої ним мови програмування Лісп.[1]
Часто, автоматичне прибирання сміття протиставляють ручному керуванню пам'ятю, що, на відмінну від автоматичного, вимагає від розробника явно вказувати для яких об'єктів виділяти пам'ять а від яких звільняти.
Основний принцип, з яким працюють різні алгоритми прибирання сміття полягає в наступному:
- Визначити об'єкти що не потрібні для подальшої роботи програми.
- Вивільнити ресурси, заняті цими об'єктами.
[ред.] Вплив автоматичного прибирання сміття на швидкодію
Дослідження впливу автоматичного прибирання сміття на швидкодію програм для мов програмування розроблених для застосування лише разом із автоматичним прибиранням сміття (такі як Java, OCaml, Python тощо), ускладнюється браком можливості вимірювати швидкодію програми з явним керуванням пам'яттю. Однак, в дослідженні [2] Метью Герца та Емері Берґера було порівняно швидкодію ручного керування пам'ятю та як прибиральників сміття з копіюванням так і без копіювання. Ці виміри показали, що генераційний прибиральник сміття Аппелівського типу зі сталою пам'яттю без копіювання із використанням вп'ятеро більше пам'яті, працює на рівні швидкодії ручного керування пам'яттю. За наявності лише втриче більше вільної пам'ятті, він працює, в середньому, на 17% повільніше за ручне керування пам'яттю. Однак, із використанням вдвіче більше пам'ятті, швидкодія зменшується на 70%. В умовах браку фізичної пам'яті, використання своп-пам'яті уповільнює швидкодію прибиральника сміття на один порядок у порівнянні із ручним керуванням пам'ятю.
[ред.] Виноски
- ↑ http://portal.acm.org/citation.cfm?id=367177.367199
- ↑ Matthew Hertz and Emery D. Berger. «Quantifying the Performance of Garbage Collection vs. Explicit Memory Management».
[ред.] Дивіться також
- Лісп — перша мова програмування з автоматичним прибиранням сміття.
- Simula та Smalltalk — перші об'єктно-орієнтовані мови програмування також мали автоматичне прибирання сміття.
- Java — одна із популярних мов програмування з автоматичним прибиранням сміття.
| Це незавершена стаття про комп'ютери. Ви можете допомогти проекту, виправивши або дописавши її. |

