Утилизация памяти dot net. Имеет ли сборщик мусора CLR другие ресурсы? - PullRequest
0 голосов
/ 22 ноября 2010

DOT NET сборщик мусора может иметь дело только с ресурсами памяти, или он также обрабатывает другие ресурсы, используемые потерянным объектом?

Как CLR освобождает эти другие ресурсы, используемые осиротевшими объектами.

Ответы [ 2 ]

4 голосов
/ 22 ноября 2010

GC работает только с управляемыми объектами.

Все неуправляемые ресурсы необходимо обрабатывать вручную:

  1. Реализация интерфейса IDisposable на любомтипы, которые используют неуправляемые ресурсы.
  2. Убедитесь, что вы вызываете метод Dispose, когда закончите использовать любые объекты, которые реализуют IDisposable.Это часто делается с помощью блока using.
0 голосов
/ 22 ноября 2010

.Net GC управляет только объектами, которые помещаются в управляемую кучу, то есть управляемыми объектами. Эти управляемые объекты могут получить доступ к неуправляемым объектам, таким как соединение с БД, дескриптор файла и т. Д. Разработчик должен освободить эти ресурсы, реализовав IDisposable или Finalize, в зависимости от ваших потребностей.

MSDN утверждает, что:

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

Вот ссылка для того же: http://msdn.microsoft.com/en-us/library/system.object.finalize.aspx

...