Интернет магазин китайских планшетных компьютеров



Компьютеры - Сборка мусора - Достоинства и недостатки

23 января 2011


Оглавление:
1. Сборка мусора
2. Проблемы ручного управления памятью
3. Механизм сборки мусора
4. Требования к языку и системе
5. Проблемы использования
6. Достоинства и недостатки
7. Управление памятью в конкретных языках и системах



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

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

Поддержка в некоторых императивных языках автоматического вызова деструктора, а также более простая, чем сборка мусора, технология использования «умных ссылок» значительно снижает вероятность утечек, позволяя концентрировать опасные места внутри реализации класса, при этом не требуя лишних ресурсов, хотя и требует при этом более высокой квалификации программиста. Конечно, писать код освобождения ресурсов всё равно придётся, но автоматические деструкторы дадут уверенность, что этот код обязательно вызовется.

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



Просмотров: 6117


<<< Подсчёт ссылок
Слабая ссылка >>>