您好,匿名用户
随意问技术百科期待您的加入

用java很久,但是从来都没有用到过finalize()方法,请给我一个必须用到finalize()的情景?最好有代码

0 投票

如题,实在想不明白,在有垃圾自动回收机制的java中,什么情况下必须用到finalize()。

用户头像 提问 2012年 12月1日 @ Riven 上等兵 (334 威望)
分享到:

1个回答

0 投票
 
最佳答案

故事是这样的,finalize是在java.lang.object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。其实gc可以回收大部分的对象(凡是new出来的对象,gc都能搞定,一般情况下我们又不会用new以外的方式去创建对象),所以一般是不需要程序员去实现finalize的。
特殊情况下,需要程序员实现finalize,当对象被回收的时候释放一些资源,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。
使用finalize还需要注意一个事,调用super.finalize();

用户头像 回复 2012年 12月1日 @ Cassiopeia 上等兵 (317 威望)
选中 2012年 12月1日 @Riven
提一个问题:

相关问题

0 投票
1 回复 38 阅读
0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Irelia 上等兵 (292 威望)
0 投票
1 回复 29 阅读
0 投票
1 回复 31 阅读
用户头像 提问 2012年 12月1日 @ Garen 上等兵 (269 威望)
0 投票
1 回复 1,858 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...