Язык C #: Сборка мусора, SuppressFinalize

I Я читаю «Язык C #», 4-е издание, в нем говорится о сборке мусора, как показано ниже:

«БИЛЛ ВАГНЕР: Следующее правило является важным отличием C # от других управляемых сред.

Перед завершением работы приложения, вызывается деструктор для всех его объектов, которые еще не были обработаны сборщиком мусора, если такая очистка не была подавлена ​​(например, вызовом библиотечного метода GC.SuppressFinalize) ».

Итак, у меня есть пара вопросов. :

  • Q1. Почему .net отличается от других управляемых сред (я полагаю, это намекает на Java?)? Конкретная проблема дизайна?

  • Q2. Что произойдет с объектами, вызываемыми GC.SuppressFinalize ? Я понимаю, что это означает, что GC не будет вызывать финализатор (деструктор) таких объектов, если да, то когда эти объекты будут действительно уничтожены, чтобы выделенные биты памяти возвращались в кучу? В противном случае произойдет утечка памяти?

16
задан akjoshi 12 April 2012 в 07:00
поделиться