Цитата:
Сообщение от
belugin
finalize готорит объекту что он должен освободить свои ресурсы. если присвоить null, то объект так и не узнает что его убивают.
Не соглашусь чуть-чуть.
finalize говорит объекту что он должен освободить ресурсы. Счетчик ссылок на объект при этом не изменяется, поэтому сборщик мусора еще не освобождает этот объект (освободит, когда ссчетчик ссылок обнулится)
если присвоить null, то счетчик ссылок уменьшится на 1. Если счетчик ссылок = 0, то сборщик мусора освободит этот объект, при этом освободятся и ресурсы. Но система не гарантирует, что освобождение произойдет непосредственно сразу после = null (может пройти некоторое время)
==========
Другими словами:
finalize - принудительно освобождает ресурсы, объект становится невалидным. Ответственность за использование объекта после finalize лежит на программисте.
= null - корректно освобождает ресурсы, но система не гарантирует, что освобождение произойдет непосредственно в момент обнуления. возможно освобождение будет выполнено позже.