Иллюстрированный самоучитель по Architecture .NET

Управление сборкой мусора с помощью класса сборщика мусора GC

Обычно лучше всего не вмешиваться в работу сборщика мусора, – пусть он выполняет свою работу незаметно для вас. Иногда, однако, программе может быть выгодно вмешаться в его работу. Пространство имен System (Система) содержит класс GC (Сборщик мусора), который дает возможность программе изменить поведение сборщика мусора. Мы рассмотрим несколько важных методов класса GC (Сборщик мусора).

SuppressFinalize

Данный метод производит запрос к системе, чтобы та не выполняла операцию завершения, т.е. не вызвала деструктор указанного объекта. Как мы видели раньше, нужно вызвать этот метод в собственной реализации метода Dispose (Освободить ранее выделенную область памяти), чтобы предотвратить выполнение операции завершения объекта, если ранее выделенная для него область памяти уже освобождена.

Collect (Собрать)

Можно принудительно выполнить сборку мусора, вызвав метод Collect (Собрать). Необязательный параметр позволяет указать, какие поколения должны принять участие в сборке мусора. Этот метод нужно использовать рационально, так как общеязыковая среда времени выполнения CLR обычно имеет лучшую информацию относительно текущего состояния памяти. Данный метод можно использовать тогда, когда программа только что освободила ряд больших объектов, и нужно иметь всю эту свободную память немедленно.

Другой пример использования этого метода был предоставлен в предыдущем разделе, где вызов Collect (Собрать) принудительно вызывает сборку тогда, когда системные объекты все еще доступны.

MaxCeneration

Это свойство возвращает максимальное поддерживаемое общеязыковой средой времени выполнения CLR число поколений.

CetCeneration

Данный метод возвращает текущий номер поколения, которое назначено объекту.

CetTotalMemory

Указанный метод возвращает объем распределенной в настоящее время памяти в байтах (а не объем свободной доступной памяти и не общий объем динамически распределяемой области памяти). Передаваемый параметр позволяет определять, должна ли система выполнить сборку мусора перед возвратом из метода. Если сборка мусора не производится, возвращаемое число байтов вероятно больше, чем фактический объем памяти, используемой объектами.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.