Знищення об’єкта і метод finalize (), блог тільки про java

Зрозуміло, деякі об'єкти використовують крім пам'яті та інші ресурси, наприклад файли, або обробляють інші об'єкти, які в свою чергу, звертаються до системних ресурсів. В цьому випадку дуже важливо, щоб ресурси вчасно звільнялися. У будь-який клас можна додати метод finalize (). Цей метод буде викликаний перед тим, як система «збирання сміття» знищить об'єкт. На практиці, якщо вам потрібно відновити ресурси і відразу використовувати їх повторно, не можна покладатися на метод finalize (). - ви не знаєте коли саме цей метод буде викликаний.
Існує метод System.runFinalizerOnExit (true). гарантує, що метод finalize () буде викликаний до того, як програма завершить свою роботу. Однак цей метод вкрай ненадійний і не рекомендований до використання. В якості альтернативи можна застосувати метод Runtime.addShutdownHook (). Додаткову інформацію про нього можна знайти в документації по API.
Якщо ресурс повинен бути звільнений одразу після його використання, потрібно самостійно написати відповідний код. Додайте метод dispose () або close (). який потрібно явно викликати для очищення пам'яті. Якщо клас має такий метод, ви повинні викликати його по завершенні роботи з об'єктом цього класу.