Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Взаимодействие со сборщиком мусора

Обработка нескольких исключений. | Блок finally | Время жизни объектов | Базовые сведения о времени жизни объектов | CIL-код, генерируемый для ключевого слова new | Роль корневых элементов приложения | Поколения объектов | Фоновая сборка мусора в версии .NET 4.0 | Public class Object | Описание процесса финализации |


Читайте также:
  1. II. Взаимодействие сторон
  2. III.4. Взаимодействие с законодательной властью, МВД и другими силовыми структурами.
  3. IV. Взаимодействие друг с другом на уровне (М) (С) и (Д)
  4. Асинхронное взаимодействие
  5. Б5.Взаимодействие семейного и общественного дошкольного воспитания.
  6. Взаимодействие алюминия со щелочами
  7. Взаимодействие ароматического кольца с электрофильными реагентами включает два этапа.

В библиотеках базовых классов доступен класс по имени System.GC, который позволяет программно взаимодействовать со сборщиком мусора за счет обращения к его статическим членам. Необходимость в непосредственном использовании этого класса в разрабатываемом коде возникает крайне редко (а то и вообще никогда). Обычно единственным случаем, когда нужно применять члены System.GC, является создание классов, предусматривающих использование на внутреннем уровне неуправляемых ресурсов. Это может быть, например, класс, работающий с основанным на С интерфейсом Windows API за счет применения протокола вызовов платформы .NET, или какая-то низкоуровневая и сложная логика взаимодействия с СОМ. В табл. 3 приведено краткое описание некоторых наиболее интересных членов класса System.GC (полные сведения можно найти в документации .NET Framework 4.0 SDK).

Таблица 3.

Член Назначение
AddMemorуPressure(), RemoveMemoryPressure() Позволяют указывать числовое значение, отражающее "уровень срочности", который вызывающий объект применяет в отношении к сборке мусора. Следует иметь в виду, что эти методы должны изменять уровень давления в тандеме и, следовательно, никогда не устранять больше давления, чем было добавлено
Collect() Заставляет сборщик мусора провести сборку мусора. Должен быть перегружен так, чтобы указывать, объекты какого поколения подлежат сборке, а также какой режим сборки использовать (с помощью перечисления GCCollectionMode)
CollectionCount() Возвращает числовое значение, показывающее, сколько раз объектам данного поколения удалось переживать процесс сборки мусора
GetGeneration() Возвращает информацию о том, к какому поколению в настоящий момент относится объект
GetTotalMemory() Возвращает информацию о том, какой объем памяти (в байтах) в настоящий момент занят в управляемой куче. Булевский параметр указывает, должен ли вызов сначала дождаться выполнения сборки мусора, прежде чем возвращать результат
MaxGeneration Возвращает информацию о том, сколько максимум поколений поддерживается в целевой системе. В.NET 4.0 поддерживается всего три поколения: 0, 1 и 2
SuppressFinalize() Позволяет устанавливать флаг, указывающий, что для данного объекта не должен вызываться его метод Finalize()
WaitForPendingFinalizers() Позволяет приостанавливать выполнение текущего потока до тех пор, пока не будут финализированы все объекты, предусматривающие финализацию. Обычно вызывается сразу же после вызова метода GC.Collect()

 

Рассмотрим применение System.GC для получения касающихся сборки мусора деталей на примере следующего метода Main(), в котором используются сразу несколько членов System.GC:

static void Main(string [ ] args)

{

// Вывод подсчитанного количества байтов в куче.

Console.WriteLine("Estimates bytes on heap: {0}",


Дата добавления: 2015-07-25; просмотров: 62 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Rw.Dispose ();| GC.WaitForPendingFinalizers ();

mybiblioteka.su - 2015-2024 год. (0.005 сек.)