Я читаю "Язык С#", 4-е издание, он рассказывает о сборке мусора, как показано ниже:
"BILL WAGNER: Следующее правило является важным различием между С# и другими управляемыми средами.
До завершения приложений вызывается деструктор для всех его объектов, которые еще не были собраны в мусор, если только такая очистка не была подавлена (например, вызовом метода библиотеки GC.SuppressFinalize).
Итак, у меня есть пара вопросов:
- Q1
. Почему .net отличается от других управляемых сред (я полагаю, это намекает на Java?) Здесь? Любая конкретная проблема дизайна?
- Q2
. Что произойдет с объектами, вызываемыми
GC.SuppressFinalize
? Я понимаю, что это означает, что GC не будет вызывать финализатор таких объектов (деструктор), если это так, когда эти объекты будут действительно уничтожены, так что выделенные биты памяти будут возвращены в кучу? В противном случае произойдет утечка памяти?