C # GC делегаты? - PullRequest
       40

C # GC делегаты?

1 голос
/ 31 марта 2011

Как я могу узнать, когда GC запускается?Могу ли я дать GC несколько делегатов для таких событий, как "OnStart" и "OnEnd"?

Ответы [ 3 ]

3 голосов
/ 31 марта 2011

Вы не можете.У вас есть Dispose метод в вашем классе, только когда вы реализуете IDisposable.Это для освобождения ресурсов.Он вызывается, когда объект «разрушается».Сама сборка мусора представляет собой черный ящик .

Для получения дополнительной информации, проверьте: http://msdn.microsoft.com/en-us/library/system.idisposable.aspx

1 голос
/ 11 мая 2012

в .NET 4 вы можете использовать Уведомления о сборке мусора

1 голос
/ 31 марта 2011

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

Обратите внимание, что я не рекомендую это, и что поведение не гарантируется.

Если вы просто хотите узнать, когда GC работает для любопытства и в образовательных целях, вы можете использовать clr memory profiler инструмент, который обычно показывает, когда и как часто GC происходит и какие объекты собираются.

...