Главная » Информационные системы » Операционные системы » 37-4.6.1.Куча и сборка мусора

37-4.6.1.Куча и сборка мусора

4.6.1.Куча и сборка мусора

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

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

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

Пример системного сбоя – освобождение памяти, на которую в программе имеются ссылки. Любое обращение по такой ссылке приводит к ошибке.

Альтернативная политика заключается в автоматическом освобождении памяти путем контроля за использованием данных и выявления тех из них, которые больше недоступны программе. Эта процедура называется сборкой мусора . Она может выполняться синхронно, то есть с приостановкой выполнения программы (до завершения сборки мусора), или асинхронно (как говорят, на лету), то есть параллельно с выполнением программы. Идеала эффективной, прозрачной и асинхронной «сборки мусора» достичь очень непросто.

Если процессы взаимодействуют друг с другом относительно редко, то такие процессы называются слабо связанными.


Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.

Поделиться

Дисциплины