Описание тега garbage-collection

Сборка мусора (GC) - это форма автоматического управления памятью, которая пытается освободить мусор или память, занятую объектами, которые больше не используются программой.

Сборка мусора была изобретена Джоном Маккарти примерно в 1959 году для решения проблем с шифрованием.

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

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

Сборка мусора в реальном времени

Хотя сборка мусора, как правило, недетерминирована, ее можно использовать в системах жесткого реального времени. Сборщик мусора в реальном времени (будучи потоком демона) должен гарантировать, что даже в худшем случае он выделит определенное количество вычислительных ресурсов потокам-мутаторам. Ограничения, накладываемые на сборщик мусора в реальном времени, обычно основаны либо на работе, либо на времени. Ограничение на основе времени будет выглядеть так: в каждом временном окне длительностью T потокам мутатора должно быть разрешено работать, по крайней мере, на время Tm. Для анализа на основе работы MMU (минимальное использование мутатора) обычно используется как ограничение в реальном времени для алгоритма сборки мусора.

Ссылки

Общее

.СЕТЬ

Джава

Болтовня

  • Squeak: Open Personal Computing and Multimedia, авторы Марк Дж. Гуздиал и Кимберли М. Роуз, охватывающие сборщик мусора Squeak Smalltalk и другие проблемы проектирования Smalltalk. Squeak почти полностью написан на Smalltalk, и весь исходный код, включая сборщик мусора, находится в свободном доступе, и его легко изучить с помощью браузеров Smalltalk.

Теоретический / Академический

Профессор Кэтрин МакКинли ведет список статей для своего курса управления памятью в Техасском университете в Интернете. (Обратите внимание, что ссылки на эти документы, представленные ниже, взяты из свободно доступных версий; почти все они размещены в университете и извлекаются с помощью Google Scholar.) Если вы хотите получить полное теоретическое представление о сборке мусора, вам следует прочитать эти документы по порядку - они расположены по возрастающей сложности тематики (не в хронологическом порядке):