1.4.4 Сборка мусора

1.4.4 Сборка мусора

Управлять памятью на низком уровне трудно и чревато ошибками, особенно в таком динамичном окружении, какое создает Ruby. Наличие механизма сборки мусора — весомое преимущество. В таких языках, как C++, за выделение и освобождение памяти отвечает программист. В более поздних языках, например Java, память освобождается сборщиком мусора (когда объект покидает область видимости).

Явное управление памятью может приводить к двум видам ошибок. Если освобождается память, занятая объектом, на который еще есть ссылки, то при последующем доступе к нему объект может оказаться в противоречивом состоянии. Так называемые висячие указатели трудно отлаживать, поскольку вызванные ими ошибки часто проявляются далеко от места возникновения. Утечка памяти имеет место, когда не освобождается объект, на который больше никто не ссылается. В этом случае программа потребляет все больше и больше памяти и в конечном счете аварийно завершается; такие ошибки искать тоже трудно. В языке Ruby для отслеживания неиспользуемых объектов и освобождения занятой ими памяти применяется механизм сборки мусора. Для тех, кто в этом разбирается, отметим, что в Ruby используется алгоритм пометки и удаления, а не подсчета ссылок (у последнего возникают трудности при обработке рекурсивных структур).

Сборка мусора влечет за собой некоторое снижение производительности. Модуль GC предоставляет ограниченные средства управления, позволяющие программисту настроить его работу в соответствии с нуждами конкретной программы. Можно также определить чистильщика (finalizer) объекта, но это уже тема для «продвинутых» (см. раздел 11.3.14).

Данный текст является ознакомительным фрагментом.



Поделитесь на страничке

Похожие главы из других книг:

Совет 5: Почта без мусора

Из книги автора

Совет 5: Почта без мусора Возможность обратиться к каждому жителю планеты с проникновенными словами и выгодным коммерческим предложением — голубая мечта некоторых работников рекламной индустрии, которая стала реальностью благодаря электронной почте. В наше время с


Совет 44: Программы без мусора

Из книги автора

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


Сборка мусора

Из книги автора

Сборка мусора Как видите, при использовании многоверсионной архитектуры постоянно накапливаются устаревшие версии, называемые "мусором". Эти версии не являются актуальными и подлежат удалению. Процесс удаления ненужных версий записей называется сборкой


Активизация сборки мусора

Из книги автора

Активизация сборки мусора Итак, сборщик мусора в .NET призван управлять памятью за вас. Однако в очень редких случаях, перечисленных ниже, бывает выгодно программно активизировать начало сборки мусора, используя дня этого GC.Collect().• Перед входом приложения в блок


Фоновая сборка мусора

Из книги автора

Фоновая сборка мусора Для ограничения такого разрастания Firebird постоянно выполняет сборку мусора (garbage collection) на фоне активности базы данных.Фоновая сборка мусора ничего не делает с устаревшими версиями записей, которые относятся к незавершенным транзакциям - они не


Сборка мусора в процессе резервного копирования

Из книги автора

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


Сборка мусора

Из книги автора

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


Управление памятью (memory management) и сборка мусора (garbage collection)

Из книги автора

Управление памятью (memory management) и сборка мусора (garbage collection) Может показаться, что этот критерий метода и языка должен принадлежать к следующей категории - реализации и среде. На самом деле он принадлежит к обеим категориям. Важнейшие требования предъявляются к языку,


Сборка мусора

Из книги автора

Сборка мусора Наиболее общей и полностью удовлетворительной техникой является лишь автоматическая сборка мусора или просто сборка


Механизм сборки мусора

Из книги автора

Механизм сборки мусора Сборщик мусора (garbage collector) - это функция исполнительной системы (runtime system) языка программирования. Сборщик мусора выполняет обнаружение и утилизацию недостижимых объектов, не нуждаясь в управлении приложением, хотя приложение может иметь в своем


Основа сборки мусора

Из книги автора

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


Практические проблемы сборки мусора

Из книги автора

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


Сборка мусора и внешние вызовы

Из книги автора

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


Механизм сборки мусора

Из книги автора

Механизм сборки мусора Приведем схему алгоритма, используемого сборщиком мусора.Решение представляет собой не единственный алгоритм, а основано на комбинации основных алгоритмов, часть из которых используется совместно, часть - независимо друг от друга. Каждая


Операции сборщика мусора

Из книги автора

Операции сборщика мусора Сборщик мусора включается одной из двух требующих память операций: инструкцией создания ( create x ) или клонирования. Сборщик запускается не только, когда программе не хватает памяти: механизм может активизироваться, когда он определяет некоторые


Удаление мусора

Из книги автора

Удаление мусора Не хватает места на диска С: и Windows постоянно вам об этом напоминает? Откройте Мой компьютер, щелкните правой кнопкой мыши на диске C:, выберите команду Свойства, а в появившемся окне нажмите кнопку Очистка диска. В окне Очистка диска (рис. 8.3) выбираем Все и