Сборка мусора в реализации .Net, поведение объектов неизвестно, невозможно понять их поведение - PullRequest
0 голосов
/ 19 декабря 2011

Я занимаюсь исследованиями библиотек .Net и размышляю о поведении, пытаясь закодировать объекты в c # и проверить их.Я просто хочу знать, что объекты имеют право на сборку мусора, когда какой-либо код не может получить к ним доступ?и перед запуском функции GC, могут ли наши объекты ссылаться на какую-то другую память, мы можем переместить их в память?И, например, если мы реализуем для них финализаторы, будет ли так, что их финализаторы будут вызываться в какой-то момент во время процесса?Я хочу очистить свои концепции, я пытался использовать некоторый код на C #, но я не ясен.

1 Ответ

3 голосов
/ 19 декабря 2011

Среда выполнения поддерживает график доступных объектов. Когда GC запустится и определит, что объект является мусором, он увидит, что у объекта есть метод Finalize, и вызовет этот метод, освобождая память. Все объекты, имеющие метод Finalize, удаляются из очереди завершения и помещаются в очередь F-Reachable. Специальный поток времени выполнения предназначен для обработки этой очереди и вызова метода finalize для каждого объекта.

Предлагаю прочитать следующую статью Джеффри Рихтера на MSDN. Это статья из 3 частей, которая прояснит все ваши сомнения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...