Все знают и помнят о важности инициализации, но многие забывает о значимости приборки за собой. Конечно, в Java есть сборщик мусора(garbage collector), который выполняет за вас грязную работу и освобождает память от ненужных объектов. Но если, например, ваш объект выделяет память каким-нибудь специфическим способом(без использования new), то тут сборщик мусора вам не поможет. Для таких случаев в Java и предусмотрен метод finalize(), который вы можете определить в вашем классе. Когда сборщик мусора захочет освободить память, занимаемую ненужным объектом, он сначала вызовет метод finalize() этого объекта, и только потом удалит сам объект. Но(!) следует помнить, что ваши объекты могут быть и не переданы сборщику мусора.