我们什么时候应该真正使用java中的finalize()方法?
如果我们想在finalize()方法中关闭连接,那么最好使用下面的代码,因为等待GC调用finalize()方法然后释放连接是没有意义的
try{
// Connection creation
}finally{
//close connection
}
所以问题是 Finalize() 方法现在还有用吗?
通过显式调用方法来释放资源确实更好。终结器不一定会立即调用,甚至根本不会调用。他们还增加了性能损失。
然而,终结器仍然可以用作释放资源的安全网,以防客户端忘记显式处置。
来自 Joshua Bloch 的《Effective Java》第二版中的主题“避免终结器”:
[D]除非作为安全网或终止非关键,否则不要使用终结器
原生资源。在极少数情况下,您确实使用了终结器,
记得调用 super.finalize。如果您使用终结器作为安全网,
请记住记录终结器中的无效用法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)