Блок finally
- это просто блок кода, который всегда выполняется после блока try
, даже если есть исключение. то есть оно локально по объему
Метод finalize()
- это подход для очистки всего объекта при его сборке мусора.
Документация по Java для finalize ()
finally
решает проблему очистки ресурсов в блоке кода независимо от того, возникает ли исключительное условие ...
finalize()
- это способ очистки ресурсов, когда ваш объект больше не используется, когда сборщик мусора определит, что больше нет ссылок на этот объект.
Короче говоря, чтобы ответить на ваш вопрос, например, если закрываемые сокеты являются членами объекта, вы должны закрыть их в методе finalize()
(хотя это неоптимально и, например, потому нет гарантии, когда GC действительно выполнит действие)
Если, однако, вы открываете сокет в методе и по завершении этого метода завершаете его, вы должны освободить ресурсы в блоке finally
.