Зачем вам реализовывать finalize ()? - PullRequest
355 голосов
/ 01 октября 2008

Я перечитал множество вопросов о новичке по Java на finalize() и считаю, что это немного удивляет, что никто не дал понять, что finalize () - ненадежный способ очистки ресурсов. Я видел, как кто-то комментирует, что он использует его для очистки соединений, что действительно страшно, поскольку единственный способ приблизиться к гарантии закрытия соединения - это реализовать try (catch) в конце концов.

Я не учился в CS, но я профессионально программирую на Java уже почти десять лет, и я никогда не видел, чтобы кто-нибудь реализовал finalize() в производственной системе. Это по-прежнему не означает, что у него нет использования, или что люди, с которыми я работал, делали это правильно.

Итак, мой вопрос: какие существуют варианты использования для реализации finalize(), которые не могут быть обработаны более надежно с помощью другого процесса или синтаксиса в языке?

Пожалуйста, предоставьте конкретные сценарии или ваш опыт, просто повторения учебника по Java или окончательного использования по назначению недостаточно, поскольку цель этого вопроса не в этом.

Ответы [ 21 ]

0 голосов
/ 19 сентября 2013

iirc - вы можете использовать метод finalize как средство реализации механизма пулирования для дорогих ресурсов, чтобы они не получали GC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...