Проблема с завершает блок

Я читал "Эффективное программирование Java Joshua Bloch. Я эта книга он советы не использовать "завершить" блок в качестве, который, как не гарантируют, будет выполняться. Кто-либо может объяснить немного больше на этом или дать ссылку некоторой статьи, которая объясняет это подробно?

1
задан bzlm 5 August 2010 в 10:27
поделиться

3 ответа

Другая проблема с финализаторами, помимо упомянутой andrewmu, связана с часто создаваемыми / уничтожаемыми объектами.

Когда вы определяете финализатор для класса, имеющего высокую скорость создания / уничтожения, вы добавляете нагрузку в поток финализатора, возможно, замедляя скорость сбора мусора этих объектов. Вместо того, чтобы немедленно освобождаться при выполнении сборки мусора, эти объекты ждут в очереди потока финализатора, чтобы быть завершенными первыми. Это увеличивает риск ошибки нехватки памяти.

1
ответ дан 2 September 2019 в 22:25
поделиться

Одна из проблем с finalize заключается в том, что он не будет вызываться, если ваша программа вызовет System.exit () - для решения этой проблемы, я думаю, Джош Блок предлагает вам использовать Runtime.addShutdownHook () вместо этого.

1
ответ дан 2 September 2019 в 22:25
поделиться

плюс: если вы забудете вызвать super.finalize () , это может быть ошибкой. поэтому реализация finalize () подвержена ошибкам .

0
ответ дан 2 September 2019 в 22:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: