Тема: Finalize & null
Показать сообщение отдельно
Старый 14.04.2010, 13:24   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
finalize готорит объекту что он должен освободить свои ресурсы. если присвоить null, то объект так и не узнает что его убивают.
Не соглашусь чуть-чуть.

finalize говорит объекту что он должен освободить ресурсы. Счетчик ссылок на объект при этом не изменяется, поэтому сборщик мусора еще не освобождает этот объект (освободит, когда ссчетчик ссылок обнулится)

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

==========
Другими словами:
finalize - принудительно освобождает ресурсы, объект становится невалидным. Ответственность за использование объекта после finalize лежит на программисте.

= null - корректно освобождает ресурсы, но система не гарантирует, что освобождение произойдет непосредственно в момент обнуления. возможно освобождение будет выполнено позже.
__________________
полезное на axForum, github, vk, coub.