首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >finalize块的问题

finalize块的问题
EN

Stack Overflow用户
提问于 2010-08-05 18:25:01
回答 3查看 980关注 0票数 1

我在读Joshua Bloch写的"Effective programming“这本书,他建议不要使用"finalize”代码块,因为它不能保证被执行。有没有人能更详细地解释这一点,或者给出一些详细解释这一点的文章的链接?

EN

回答 3

Stack Overflow用户

发布于 2010-08-05 18:30:57

finalize的一个问题是,如果你的程序调用System.exit(),它将不会被调用--为了解决这个问题,Josh Block建议你改用Runtime.addShutdownHook()

票数 1
EN

Stack Overflow用户

发布于 2010-08-05 19:07:17

除了andrewmu提到的问题之外,终结器的另一个问题与频繁创建/销毁的对象有关。

当您为具有高创建/销毁速率的类定义终结器时,您会向终结器线程添加负载,这可能会减慢这些对象的垃圾收集率。这些对象不是在GC发生时立即释放,而是在终结器线程队列中等待首先完成。这会增加发生内存不足错误的风险。

票数 1
EN

Stack Overflow用户

发布于 2010-08-22 00:36:43

另外:如果你忘记调用super.finalize(),,这可能是一个错误。所以finalize()的实现是容易出错的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3413796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档