首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >清理finalize()或finally()中的代码?

清理finalize()或finally()中的代码?
EN

Stack Overflow用户
提问于 2009-12-04 07:43:54
回答 9查看 5.2K关注 0票数 9

我一般认为清理资源是在finally块中完成的,

最近,我在一个类中发现了这个特殊的代码片段,它覆盖了Object类的finalize()方法。

代码语言:javascript
运行
复制
protected void finalize() {  
    try {
        In.close(); 
        Out.close();
        socket.close();
    }
    catch (Exception e) {
        //logger code here
    }
}

这是个好主意吗?相对于finallyfinalize()的优势和劣势是什么

EN

Stack Overflow用户

发布于 2009-12-04 07:51:08

终于来了。Finalize是不好的,因为它可能永远不会被调用。仅将finalize用作安全网。例如,InputStream应该有一个终结器,以便在应用程序忘记的情况下关闭流。但是,应用程序应该将其关闭。

如果是我,我也会在终结器中进行清理,并记录执行清理时的情况,然后在应用程序中跟踪忘记正确清理的代码。

票数 2
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1843905

复制
相关文章

相似问题

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