Призначення цього методу пояснюється в документації API наступним чином:
його викликають, якщо і коли віртуальна машина Java визначила, що більше немає засобів, за допомогою яких цей об'єкт може отримати доступ будь-яким потоком, який ще не загинув, за винятком дії в результаті вдосконалення якогось іншого об'єкта або клас, який готовий до завершення ...
звичайна мета finalize
... - виконувати дії з очищення до того, як об'єкт безповоротно відкидається . Наприклад, метод доопрацювання об'єкта, який представляє з'єднання введення / виводу, може виконувати явні транзакції вводу / виводу, щоб перервати з'єднання, перш ніж об'єкт буде назавжди відкинутий ...
Якщо вас додатково цікавлять причини, через які мовні дизайнери обрали, що "об'єкт безповоротно викидається" ( зібраний сміття ) спосіб, що не підлягає контролю програміста програми ("ми ніколи не повинні покладатися"), це було пояснено у відповіді питання :
автоматичне збирання сміття ... виключає цілі класи помилок програмування, які переносять програмісти C і C ++. Ви можете розробити Java-код з упевненістю, що система швидко знайде багато помилок і що основні проблеми не будуть спокою до тих пір, поки не буде відправлений ваш виробничий код ..
Вище цитата, у свою чергу, взята з офіційної документації про цілі дизайну Java , тобто її можна вважати авторитетною посиланням, що пояснює, чому дизайнери мови Java вирішили саме цей шлях.
Для більш детального та мовного агностичного обговорення цього уподобання див. Розділ 9.6 OOSC. Автоматичне управління пам’яттю (насправді не тільки цей розділ, а й увесь розділ 9 дуже варто прочитати, якщо вас цікавлять подібні речі). Цей розділ відкривається однозначним твердженням:
Гарне середовище OO повинно пропонувати автоматичний механізм управління пам'яттю, який буде виявляти та відновлювати недоступні об'єкти, що дозволяє розробникам додатків концентруватися на своїй роботі - розробці додатків.
Попередня дискусія повинна бути достатньою, щоб показати, наскільки важливим є доступність такої установи. Словами Майкла Швейцера та Ламберта Стретера:
Об'єктно-орієнтована програма без автоматичного управління пам’яттю приблизно така сама, як скороварка без запобіжного клапана: рано чи пізно річ обов'язково підірветься!