Описание тега garbage-collection
Сборка мусора была изобретена Джоном Маккарти примерно в 1959 году для решения проблем с шифрованием.
Сборку мусора часто изображают как противоположность ручного управления памятью, когда программист должен указать, какие объекты следует освободить и вернуть в систему памяти. Однако во многих системах используется комбинация этих двух подходов, а другие методы, такие как выделение стека и вывод области, могут частично решить проблему. Существует двусмысленность терминов, поскольку в теории часто используются термины ручная сборка мусора и автоматическая сборка мусора, а не ручное управление памятью и сборка мусора, и не ограничивают сборку мусора управлением памятью, скорее учитывая, что любой логический или физический ресурс может быть мусором. собраны.
Сборка мусора традиционно не управляет ограниченными ресурсами, кроме памяти, которую используют типичные программы, такими как сетевые сокеты, дескрипторы базы данных, окна взаимодействия с пользователем, а также дескрипторы файлов и устройств. Методы, используемые для управления такими ресурсами, в частности деструкторы, также могут быть достаточными для управления памятью, не оставляя необходимости в сборке мусора. Некоторые системы GC позволяют ассоциировать такие другие ресурсы с областью памяти, которая при сборе приводит к освобождению другого ресурса; это называется завершением. Завершение может привести к осложнениям, ограничивающим его удобство использования, таким как недопустимая задержка между неиспользованием и восстановлением особенно ограниченных ресурсов или отсутствие контроля над тем, какой поток выполняет работу восстановления.
Сборка мусора в реальном времени
Хотя сборка мусора, как правило, недетерминирована, ее можно использовать в системах жесткого реального времени. Сборщик мусора в реальном времени (будучи потоком демона) должен гарантировать, что даже в худшем случае он выделит определенное количество вычислительных ресурсов потокам-мутаторам. Ограничения, накладываемые на сборщик мусора в реальном времени, обычно основаны либо на работе, либо на времени. Ограничение на основе времени будет выглядеть так: в каждом временном окне длительностью T потокам мутатора должно быть разрешено работать, по крайней мере, на время Tm. Для анализа на основе работы MMU (минимальное использование мутатора) обычно используется как ограничение в реальном времени для алгоритма сборки мусора.
Ссылки
Общее
- Сборка мусора (Википедия)
- Страница сбора мусора, Ричард Джонс
- Справочник по сбору мусора: искусство автоматического управления памятью, Ричард Джонс, Энтони Хоскинг и Элиот Мосс (2011)
- Сборка мусора: алгоритмы автоматического управления динамической памятью Ричарда Джонса и Рафаэля Д. Линса (1996)
- Сборщик мусора в реальном времени на основе времени жизни объектов
- Обзор Пола Уилсона "Однопроцессорные методы сборки мусора" (1992, LNCS vol. 637)
.СЕТЬ
Джава
Болтовня
- Squeak: Open Personal Computing and Multimedia, авторы Марк Дж. Гуздиал и Кимберли М. Роуз, охватывающие сборщик мусора Squeak Smalltalk и другие проблемы проектирования Smalltalk. Squeak почти полностью написан на Smalltalk, и весь исходный код, включая сборщик мусора, находится в свободном доступе, и его легко изучить с помощью браузеров Smalltalk.
Теоретический / Академический
Профессор Кэтрин МакКинли ведет список статей для своего курса управления памятью в Техасском университете в Интернете. (Обратите внимание, что ссылки на эти документы, представленные ниже, взяты из свободно доступных версий; почти все они размещены в университете и извлекаются с помощью Google Scholar.) Если вы хотите получить полное теоретическое представление о сборке мусора, вам следует прочитать эти документы по порядку - они расположены по возрастающей сложности тематики (не в хронологическом порядке):
- Обработка списков в реальном времени на последовательном компьютере, Baker, CACM, 21(4) 280-294, 1978.
- Нерекурсивный алгоритм сжатия списков, Cheney, CACM, 13(11): 677-678, 1970.
- Сборщик мусора в реальном времени, основанный на времени жизни объектов, Либерман и Хьюитт, CACM, 26(6): 419-429, 1983. (Этот загружается)
- Очистка поколений: высокопроизводительный алгоритм восстановления хранилища без прерывания работы, Унгар, Труды первого симпозиума по разработке программного обеспечения ACM SIGSOFT/SIGPLAN по практическим средам разработки программного обеспечения, 1984, страницы 157-167.
- Простая поколенческая сборка мусора и быстрое распределение, Appel, Software-Practice and Experience 19(2):171-183, февраль 1989 г.
- Сборка мусора на основе возраста, Д. Стефанович, К. С. МакКинли, Дж. Б. Мосс, Конференция ACM по системам, языкам и приложениям объектно-ориентированного программирования. (OOPSLA), стр. 370--381. Денвер, Колорадо, ноябрь 1999 г.
- Старая первая сборка мусора на практике: оценка на виртуальной машине Java, Д. Стефанович, М. Герц, С. М. Блэкберн, К. С. Маккинли и Дж. Б. Мосс, Производительность системы памяти, Берлин, Германия, стр. 175--184, июнь 2002 г. .
- Beltway: Getting Around Garbage Collection Gridlock, SM Blackburn, R. Jones, KS McKinley и JEB Moss, Конференция ACM по проектированию и реализации языков программирования, Берлин, Германия, стр. 153--164, июнь 2002 г.
- Эффективная машинно-независимая процедура для сбора мусора в различных структурах списков, Schorr & Waite, CACM, 10(8): 501-506, 1967.
- Сравнение алгоритмов сжатия для сборки мусора, Коэн и Николау, Транзакции ACM на языках программирования и системах (TOPLAS), том 5, выпуск 4, страницы 532-553, октябрь 1983 г.
- MC2: Высокопроизводительная сборка мусора для сред с ограничением памяти, Sachindran, Berger & Moss, Конференция ACM по системам объектно-ориентированного программирования, языкам и приложениям, стр. 81-96, Ванкувер, Британская Колумбия, октябрь 2004 г.
- Immix: сборщик мусора в области меток с эффективностью использования пространства, быстрой сборкой и производительностью мутатора, Blackburn & McKinley, Конференция ACM по проектированию и реализации языков программирования, стр 22-32, Тусон, Аризона, июнь 2008 г.
- Эффективный инкрементный автоматический сборщик мусора, Deutsch & Bobrow, CACM, 19(9): 522-526, сентябрь 1976 г.
- Подсчет дополнительных ссылок: быстрая сборка мусора без ожидания, С. М. Блэкберн и К. С. Маккинли, Труды конференции ACM 2003 SIGPLAN по объектно-ориентированным программным системам, языкам и приложениям, стр. 344-359, Аннехием, Калифорния, октябрь 2003 г.
- Cycle Tracing: Efficient Concurrent Mark-Sweep Cycle Collection, Frampton & Blackburn, 2009. (В представлении в ISMM).
- Многопроцессорная компактификация сборки мусора, Гай Л. Стил младший, CACM 18(9): 495-508, 1975.
- Сборка мусора на лету: совместное упражнение, EW Dijkstra, L. Lamport, AJ Martin, CS Scholten и EFM Steffens, Communications of the ACM, 21(11):966-975, ноябрь 1978 г.
- Вывод параллельных алгоритмов сборки мусора с сохранением правильности, Вечев, Яхав и Бэкон, Конференция ACM по проектированию и реализации языков программирования, Оттава, Онтарио, стр. 341-353, 2006.
- Сборщик мусора в реальном времени с низкими накладными расходами и последовательным использованием, Бэкон, Ченг и Раджан, Симпозиум ACM по принципам языков программирования, Новый Орлеан, Луизиана, стр. 285-298, 2003. (Этот загружается)
- Налоги и расходы: демократичное планирование для вывоза мусора в реальном времени, Ауэрбах, Бэкон, Ченг, Гроув, Бирон, Грейси, Макклоски, Мичик и Скьямпакон, Международная конференция ACM по встроенному программному обеспечению, Атланта, Джорджия, стр. 245-254, 2008. (Этот скачивает)
- Сборка мусора в неблагоприятной среде, Х. Бем и М. Вайзер, Практика и опыт работы с программным обеспечением, 18(9):807-820, 1988.
- Hoard: масштабируемый распределитель памяти для многопоточных приложений, ED Berger, KS McKinley, RD Blumofe и PR Wilson, Девятая международная конференция по архитектурной поддержке языков программирования и операционных систем, Кембридж, Массачусетс, стр. 117--128, ноябрь 2000 г. .
- Корк: динамическое обнаружение утечки памяти для языков, собираемых мусором,Jump и McKinley, В материалах, представленных в ACM Transactions on Software Practice & Experience, 2009 г. (сокращенная версия опубликована на конференции ACM по языкам программирования, Ницца, Франция, январь 2009 г.)
- Leak Pruning, Bond & McKinley, Конференция ACM по поддержке архитектуры для языков программирования и операционных систем, Вашингтон, округ Колумбия, март 2009 г. (в печати).
- Free-me: A Static Analysis for Individual Object Reclamation, Guyer & McKinley, Конференция ACM по разработке и реализации языков программирования, Оттава, Канада, стр. 364-375, июнь 2006 г.
- Сборка мусора может быть быстрее, чем выделение стека, Appel, Information Processing Letters 25(4):275-279, 17 июня 1987 г.
- Преимущество сборки мусора: улучшение локальности программы Хуанг, Блэкберн, МакКинли, Мосс, Ван и Ченг, Конференция ACM по системам объектно-ориентированного программирования, языкам и приложениям, Ванкувер, Британская Колумбия, стр. 69-80, октябрь 2004 г.
- Демистификация магии: низкоуровневое программирование высокого уровня, Дэниел Фрэмптон, Стивен М. Блэкберн, Перри Ченг, Робин Гарнер, Дэвид П. Гроув, Дж. Элиот Б. Мосс и Сергей И. Салишев. Международная конференция ACM по виртуальным средам выполнения, Вашингтон, округ Колумбия, март 2009 г. (в печати).
- Мифы и реальность: Влияние сбора мусора на производительность, С. М. Блэкберн, П. Ченг и К. С. Маккинли, Конференция ACM SIGMETRICS по компьютерным системам измерения и моделирования, стр. 25--36, Нью-Йорк, Нью-Йорк, июнь 2004 г.
- Единая теория сборки мусора, Бэкон, Ченг и Раджан, Конференция ACM по объектно-ориентированному программированию, системам, языкам и приложениям, Ванкувер, Британская Колумбия, Канада, стр. 50-68, 2004.