Разница ч / б деструктор и метод финализации - PullRequest
1 голос
/ 14 февраля 2010

Я хочу знать последовательность вызова этих функций.Например, если наша куча заполнена, будет вызван GC.Он будет отмечать объект и вызывать его операцию завершения, теперь у нас есть этап развертки ... на котором ссылка на этот объект удаляется и объект становится недоступным..Что это будет делать тогда ...

Ответы [ 4 ]

2 голосов
/ 14 февраля 2010
2 голосов
/ 14 февраля 2010

Существует множество документов, объясняющих, как работает сборщик мусора .NET. Вот несколько, чтобы начать с:

http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

http://msdn.microsoft.com/en-us/library/ms973837.aspx

http://www.simple -talk.com / DotNet / .net-основа / understanding-garbage-collection-in-.net /

2 голосов
/ 14 февраля 2010

В C # /. NET нет "деструктора", хотя в прошлом термин, по-видимому, использовался взаимозаменяемо с "финализатором".

В большинстве случаев вам также не следует реализовывать финализаторы; основной случай, когда вам нужно их использовать, это если класс удерживает неуправляемые ресурсы, и в этом случае вы должны реализовывать шаблон IDisposable (технически вы можете назвать Dispose «деструктором», но он делает * 1005). * не фактически освобождает любую память в куче, что является важным отличием при обсуждении управления памятью).

Не переоценивайте ГХ с точки зрения управления памятью. Просто убедитесь, что вы освобождаете любые неуправляемые ресурсы, которые используете (дескрипторы файлов и т. Д.). И если вы видите, что кто-то использует термин деструктор , он, вероятно, хотел сказать финализатор .

1 голос
/ 14 февраля 2010

A Очень хорошее видео об управлении памятью .Net на .Net Управление памятью . Это поможет очистить ваши сомнения насчет финализатора и того, как он называется, как он называется и т. Д.

...