Главная » Java » finalize и восстановление объектов Java

1

 

 

Метод finalize способен "воскресить" (resurrect) объект, заново снабдив его соответствующей ссылкой, — например, поместив в статический список объектов. Такой подход, мягко говоря, нельзя отнести к безусловно удачным, но система никак не способна помешать его применению.

   Виртуальная машина вызывает метод finalize каждого объекта, самое большее, один раз, хотя объект может попадать в сферу "интересов" сборщика мусора более одного раза, если при предыдущем обращении к finalize объект был восстановлен. Если возможность "воскрешения" объектов существенна для реализации конкретного проекта, имейте в виду, что объект удастся восстановить только один раз, — это, вероятно, не то, чего бы вам хотелось достичь.

   Если, по вашему мнению, восстанавливать объекты в ходе выполнения finalize все-таки необходимо, делать это следует осмотрительно и тщательно — а лучше вместо "воскрешения" старых объектов воспользоваться средствами их клонирования либо прибегнуть к созданию новых. В теле метода finalize можно сформировать ссылку на новый объект, "наследующий" состояние старого, а не адресовать "умирающий" объект как таковой. Будучи подлинно новым, клонированный объект сможет, если это необходимо, в будущем вызвать свой метод finalize еще раз и вновь создать собственную клонированную копию следующего "поколения", гарантируя возможность выживания, —  пусть не для себя самого, так для своих потомков.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии

1 комментарий