Производительность .NET-приложений зависит от множества факторов среди которых и сборщик мусора (GC - Garbage Collector). В этой статье мы переделаем компонет отображения FPS для демонстрации работы GC.
Переделки минимальны, класс System.GC уже содержит необходимые нам счетчики, нам нужно только отобразить их.
Вот и все. Если показания GCs постоянно увеличиваются - есть смысл пересмотреть логику выделения памяти под новые объекты.
Поля класса GC, в котором реализованы методы управления сборщиком мусора. Информация дана для общего обзора, так как режим управления памятью желательно оставлять по умолчанию а выделение памяти под новые объекты следует контролировать различными видами пулов (ObjectPool).
Public-свойства
MaxGeneration
Максимальное количество поддерживаемых в управляющей памяти поколений. Статическое
Public-методы
AddMemoryPressure
Уведомление среды выполнения о резервировании большого объема неуправляемой памяти, который необходимо учесть при планировании работы сборщика мусора. Статический
Collect
Перегруженный. Активизирует процесс сборки мусора. Сборка происходит в отдельном потоке. Поэтому время начала деятельности сборщика остается неопределенным. Статический
CollectionCount
Определяет общее количество проходов сборщика для данного поколения объектов. Статический
Equals
Определение эквивалентности объектов.
GetGeneration
Перегруженный. Возвращает значение номера поколения, содержащего данный объект. Статический
GetTotalMemory
Возвращает количество байт, занятых под объекты в управляющей памяти. В зависимости от значения параметра типа bool учитываются (или не учитываются) результаты деятельности сборщика мусора в момент выполнения метода. Сборщик мусора работает в теневом потоке, и в принципе можно немножко подождать результатов его работы. Статический
KeepAlive
Ссылается на указанный объект, делая его недоступным для сборщика мусора с момента начала текущей программы до вызова этого метода. Статический
RemoveMemoryPressure
Информирует среду выполнения об освобождении области неуправляемой памяти. Эта информация может быть полезна сборщику мусора для планирования работы. Статический
SuppressFinalize
Метод обеспечивает уведомление сборщика мусора о том, что данный объект (представляется ссылкой в параметре метода) не подлежит удалению. Статический
ReRegisterForFinalize
Сначала защищаем объект от GC путем вызова метода SuppressFinalize. А теперь снимаем с объекта эту защиту. Статический
WaitForPendingFinalizers
Приостанавливает текущий поток до тех пор, пока поток, обрабатывающий очередь финализаторов, не обработает всю очередь. Статический
914 Прочтений • [Создание компонента для отображения работы GC] [08.08.2012] [Комментариев: 0]