I Я читаю «Язык C #», 4-е издание, в нем говорится о сборке мусора, как показано ниже:
«БИЛЛ ВАГНЕР: Следующее правило является важным отличием C # от других управляемых сред.
Перед завершением работы приложения, вызывается деструктор для всех его объектов, которые еще не были обработаны сборщиком мусора, если такая очистка не была подавлена (например, вызовом библиотечного метода GC.SuppressFinalize) ».
Итак, у меня есть пара вопросов. :
Q1. Почему .net отличается от других управляемых сред (я полагаю, это намекает на Java?)? Конкретная проблема дизайна?
Q2. Что произойдет с объектами, вызываемыми GC.SuppressFinalize
?
Я понимаю, что это означает, что GC не будет вызывать финализатор (деструктор) таких объектов, если да, то когда эти объекты будут действительно уничтожены, чтобы выделенные биты памяти возвращались в кучу? В противном случае произойдет утечка памяти?