PreDestroy аннотация, сравнение с finalise()

196
20 сентября 2018, 16:10

Является ли использование, @PreDestroy плохой практикой(как с finalize)?

Answer 1

Во-первых, если уж проводить аналогию между обработчиком событий жизненного цикла SpringBean и финализатором POJO, то проводить её надо между @PreDestroy и finalize(). Во-вторых, нет, не является. Чтобы понять это, достаточно знать почему не рекомендуется использовать finalize():

  1. Его вызов вообще не гарантируется;
  2. При его вызове объект может создать ссылку на самого себя и предотвратить собственную сборку;
  3. При вызове метода finalize() класса не произойдёт вызова этого же метода у суперкласса, что в некоторых случаях может приводить к неправильному освобождению ресурсов;
  4. Исключения выброшенные в финализаторе будут потеряны;
  5. Он замедляет сборку мусора. Если верить Блоху, то примерно в 430 раз.

В то же время @PreDestroy вообще не имеет отношения к сборке мусора, не влияет на производительность и в целом ведёт себя в полном соответствии с правильными архитектурными принципами.

READ ALSO
Как работает нормализация Java (normalize)

Как работает нормализация Java (normalize)

Есть такой код, который создает дерево DOM из файла FILE_NAME, а метод writeFileXML() записывает изменения в файл:

229
rmiregistry не запускается на localhost

rmiregistry не запускается на localhost

Есть специализированное приложение на java, которое не запускается под ubuntuПри запуске выдает, что не может соединится с rmiregistry

247
Работа отдельного потока с Jsoup. Android

Работа отдельного потока с Jsoup. Android

Был создан класс Parser,использующий Jsoup, который объединял в себе методы для парсинга значений с сайтаВ обычной консоли все его методы работали...

221