Введение

Форма автоматического управления памятью
сборка мусора в управлении памятью

[[Файл:Структура и интерпретация компьютерных программ p.764a. gif|thumb|400px|Сборка мусора со остановкой и копированием в архитектуре Lisp: Другие подобные методы включают выделение памяти в стеке, вывод областей и владение памятью, а также их комбинации. Сборка мусора может занимать значительную долю общего времени обработки программы и, как следствие, влиять на производительность. Ресурсы, отличные от памяти, такие как сетевые сокеты, дескрипторы баз данных, окна, дескрипторы файлов и дескрипторы устройств, обычно не обрабатываются сборкой мусора, а другими методами (например, деструкторами). Некоторые из этих методов также освобождают память.

Обзор

Многие языки программирования требуют сборки мусора, либо как часть спецификации языка (например, RPL, Java, C#, D,

Преимущества

GC освобождает программиста от необходимости вручную освобождать память. Это помогает избежать некоторых видов ошибок:

Висячие указатели, возникающие, когда участок памяти освобождается, пока на него все еще существуют указатели, и один из этих указателей разыменовывается. К этому моменту память могла быть перераспределена для другого использования, что приведет к непредсказуемым результатам. Ошибки двойного освобождения, возникающие, когда программа пытается освободить область памяти, которая уже была освобождена, и, возможно, уже была выделена повторно. Определенные виды утечек памяти, когда программа не освобождает память, занимаемую объектами, которые стали недостижимыми, что может привести к исчерпанию памяти.

Недостатки

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